У меня есть следующий (снятый) код:
<?PHP class A { function Show(){ echo "ciao"; } } $a = new A(); $b = new B(); class B { function __construct() { $a->Show(); } } ?>
С некоторым удивлением я не могу получить доступ к глобально определенной переменной $ a из класса, и я получаю исключение неопределенной переменной . Любая помощь?
Почему сюрприз? Это довольно логическая проблема с переменной областью …
Я предлагаю вам использовать global
ключевое слово или переменную $GLOBALS
для доступа к вашей переменной.
EDIT: Итак, в вашем случае это будет:
global $a; $a->Show();
или
$GLOBALS['a']->Show();
EDIT 2: И, поскольку Vinko прав, я предлагаю вам взглянуть на руководство PHP по области переменных .
пожалуйста, не используйте глобальный метод, который предлагается. У меня боль в животе.
Передайте $ a в конструктор B.
class A { function Show(){ echo "ciao"; } } $a = new A(); $b = new B( $a ); class B { function __construct( $a ) { $a->Show(); } }
Вам нужно будет определить его как global
переменную внутри области функции, в которой вы хотите ее использовать.
function __construct() { global $a; $a->Show(); }
<?php class A { public function Show(){ return "ciao"; } } class B { function __construct() { $a = new A(); echo $a->Show(); } } $b = new B(); ?>