我有下面的代码:
<?PHP
class A {
function Show(){
echo "ciao";
}
}
$a = new A();
$b = new B();
class B {
function __construct() {
$a->Show();
}
}
?>
有点意外的是,我无法从类中访问全局定义的$a变量,并且得到了一个 Undefined variable 异常。
5条答案
按热度按时间w8biq8rn1#
请不要使用所建议的全局方法。那会使我感到胃痛。
将$a传入B的构造函数。
i5desfxk2#
有什么好惊讶的?这是一个很合理的变量作用域问题...
我建议您使用
global
关键字或变量$GLOBALS
来访问您的变量。**编辑:**因此,在您的情况下,这将是:
或
**EDIT 2:**而且,既然Vinko是对的,我建议您看一下PHP关于variable scope的手册。
dhxwm5r43#
您需要在要使用它的函数的作用域内将它定义为
global
variable。whitzsjs4#
感谢提问...当然,你的代码是一个精简的非常好的示例代码,答案很简单,在PHP中当你想使用全局变量或类似的变量时,你需要使用
global
语句将其传递到代码的另一个作用域,例如,在本例中,你应该知道,在函数内部使用的任何变量默认情况下都被限制在局部函数的作用域中,所以你需要声明这个变量是一个全局变量,就像这样:好好享受...
dgsult0t5#