I have the following (stripped down) code:
<?PHP
class A {
function Show(){
echo "ciao";
}
}
$a = new A();
$b = new B();
class B {
function __construct() {
$a->Show();
}
}
?>
With a bit of surprise I cannot access the globally defined $a variable from within the class and I get a Undefined variable exception. Any help?
Why the surprise? That's a pretty logical variable scope problem there...
I suggest you use either the global
keyword or the variable $GLOBALS
to access your variable.
EDIT: So, in your case that will be:
global $a;
$a->Show();
or
$GLOBALS['a']->Show();
EDIT 2: And, since Vinko is right, I suggest you take a look at PHP's manual about variable scope.
You will need to define it as a global
variable inside the scope of the function you want to use it at.
function __construct() {
global $a;
$a->Show();
}
please don't use the global method that is being suggested. That makes my stomach hurt.
Pass $a into the constructor of B.
class A {
function Show(){
echo "ciao";
}
}
$a = new A();
$b = new B( $a );
class B {
function __construct( $a ) {
$a->Show();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With