孩子的文件路径

发布于 2024-10-14 06:26:46 字数 319 浏览 1 评论 0原文

<代码>

class a1 extends class b{}
class a2 extends class b{}
class a3 extends class b{}
class a4 extends class b{}
class a5 extends class b{}

我需要 $this->filePath 在每个 a1 到 a5 中指向其文件的位置,但是当我在父级中设置 $this->filePath = __FILE__ 时,在子级中 $this->filePath 指向父级位置

class a1 extends class b{}
class a2 extends class b{}
class a3 extends class b{}
class a4 extends class b{}
class a5 extends class b{}

I need $this->filePath in each a1 to a5 that point to location of it's file, but when I set $this->filePath = __FILE__ in parent, in children $this->filePath point to parent location

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鹿! 2024-10-21 06:26:46

由于 __FILE__ 的性质,无法在 b 的构造函数中全局执行此操作 - 它的行为不像函数,而是一个需要处理的魔术常量(并替换为其实际值)当解释文件时。

您必须分别为每个孩子执行此操作。这在 PHP 5 中有效:

class a1 extends b{ private $path = __FILE__;}
class a2 extends b{ private $path = __FILE__;}
class a3 extends b{ private $path = __FILE__;}
class a4 extends b{ private $path = __FILE__;}
class a5 extends b{ private $path = __FILE__;}

我知道在父级中执行此操作的唯一方法是使用 debug_backtrace(),但这不是一个好的做法。

There is no way to do this globally in b's constructor due to the nature of __FILE__ - it does not behave like a function, but is a magic constant that gets processed (and replaced with its actual value) when the file is interpreted.

You will have to do this in each child separately. This works in PHP 5:

class a1 extends b{ private $path = __FILE__;}
class a2 extends b{ private $path = __FILE__;}
class a3 extends b{ private $path = __FILE__;}
class a4 extends b{ private $path = __FILE__;}
class a5 extends b{ private $path = __FILE__;}

The only way I know to do this in the parent is using debug_backtrace(), and that is not a good practice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文