Bir sınıf içinde küresel değişkeni erişin

3 Cevap

Ben aşağıdaki (soyunmuş) kodu vardır:

<?PHP
    class A {
    	function Show(){
    		echo "ciao";
    	}
    }

    $a = new A();
    $b = new B();

    class B {
        function __construct() {
            $a->Show();
        }
    }
?>

Sürprizdi ile ben sınıf içinde global tanımlanmış $ bir değişkene erişemezsiniz ve ben bir Undefined variable istisna olsun. Herhangi bir yardım?

3 Cevap

Neden sürpriz? Oradaki oldukça mantıklı bir değişken kapsamı sveyaun ...

Ben size değişken erişmek için global anahtar sözcük veya değişken $GLOBALS ya kullanmanızı öneririz.

EDIT: Yani, senin durumunda o olacak:

global $a;
$a->Show();

veya

$GLOBALS['a']->Show();

EDIT 2: Ve, Vinko doğru olduğundan, ben senin hakkında PHP'nin kılavuzuna bir göz atın öneririz variable scope.

tavsiye ediliyor küresel yöntemini kullanmayın lütfen. Bu benim mide ağrıtıyor.

B. yapıcı $ a geçmek

class A {
    function Show(){
            echo "ciao";
    }
}

$a = new A();
$b = new B( $a );

class B {
    function __construct( $a ) {
        $a->Show();
    }
}