【发布时间】:2018-04-15 08:26:37
【问题描述】:
我想知道在 PHP 中做这样的事情是不好的做法(我假设是)?常识告诉我这可能会导致 UB,但我无法在手册或其他地方找到对此的参考。
<?php
class A
{
public function __construct(){}
}
class B extends A
{
public function __construct()
{
global $d;
$d = new C; // How wrong is it to replace the value of $d from inside B, like this?
exit();
}
}
class C extends A
{
public function __construct()
{
echo 'C';
}
}
$d = new B;
输出:C
我想知道执行这样的代码所带来的风险(如果有的话),并且特别感谢一个关于执行这样的事情的手册的链接。
或者(因为这个简单的代码运行没有错误),这个代码是否有效,但只是被认为是一种不好的做法?
【问题讨论】:
-
类和对象不是为此目的而制作的。如果您在不同的变量中创建超过 1 个,它将不起作用......您可以将它用于您自己的代码,但您不应该这样做。制作了一些
if的帮助 -
@GrumpyCrouton 我的意思是将我的问题更多地指向从内部替换对象的行为(正如标题所暗示的那样),而不仅仅是它使用
global的事实。对不起,如果我不清楚。 -
@user6003859 我知道,我并没有真正回答你的问题(否则我会发布答案),我在评论全局变量的使用。我认为这与您有关,因为您担心不良的编码实践:) 如果您担心任何不良编码实践,那么使用一些不良的编码实践是没有意义的。
-
好的,那么。干杯。
标签: php class oop object recursion