我有以下(剥离)代码:
<?PHP
class A {
function Show(){
echo "ciao";
}
}
$a = new A();
$b = new B();
class B {
function __construct() {
$a->Show();
}
}
?>
有点意外,我无法从类中访问全局定义的$ a变量,我得到一个 Undefined variable 异常。有什么帮助吗?
答案 0 :(得分:18)
请不要使用建议的全局方法。这让我肚子疼。
将$ a传递给B的构造函数。
class A {
function Show(){
echo "ciao";
}
}
$a = new A();
$b = new B( $a );
class B {
function __construct( $a ) {
$a->Show();
}
}
答案 1 :(得分:6)
您需要在要使用它的函数范围内将其定义为global
variable。
function __construct() {
global $a;
$a->Show();
}
答案 2 :(得分:5)
为何惊喜?那是一个非常合理的变量范围问题......
我建议您使用global
关键字或变量$GLOBALS
来访问您的变量。
编辑:因此,在您的情况下将是:
global $a;
$a->Show();
或
$GLOBALS['a']->Show();
编辑2:而且,由于Vinko是对的,我建议你看一下关于variable scope的PHP手册。
答案 3 :(得分:0)
<?php
class A {
public function Show(){
return "ciao";
}
}
class B {
function __construct() {
$a = new A();
echo $a->Show();
}
}
$b = new B();
?>