Bir sınıf yöntemiyle erişilebilir global bir değişken tanımlamak bir yolu var mı?

2 Cevap php

Here is the situation I create a instance of a class

$newobj = new classname1;

Sonra altına bir sınıf writtern var ve ben yukarıdaki nesneye erişmek için bu sınıfa istiyorum

class newclass {
    public function test() {
       echo $newobj->display();
    }
}

Bu izin verilmez, bir sınıf üzerinden global bir değişken tanımlamak bir yolu var mı?

2 Cevap

Örneğe küresel yapın:

$newobj = new classname1;

class newclass {
    public function test() {
       global $newobj;
       echo $newobj->display();
    }
}

Ben ilk satır için bir DOWNVote var, ben onu kaldırıldı.

Bu is allowed, but you need to use the appropriate syntax: either the global anahtar kelime veya $GLOBALS superglobal:

http://es.php.net/manual/en/language.variables.scope.php

http://es.php.net/manual/en/reserved.variables.globals.php

<?php

class classname1{
    private $id;
    public function __construct($id){
        $this->id = $id;
    }
    public function display(){
        echo "Displaying " . $this->id . "...\n";
    }
}
$newobj = new classname1(1);

class newclass {
    public function test() {
        global $newobj;
        echo $newobj->display();
    }
    public function test_alt() {
        echo $GLOBALS['newobj']->display();
    }
}

$foo = new newclass;
$foo->test();
$foo->test_alt();

?>

Bununla birlikte, küresel değişkenler her zaman kullanılmalıdır dikkatli. Onlar anlamak ve korumak zor ve izini zor hata koduna yol açabilir. Sadece gerekli argümanların normalde kolay:

<?php

class classname1{
    private $id;
    public function __construct($id){
        $this->id = $id;
    }
    public function display(){
        echo "Displaying " . $this->id . "...\n";
    }
}
$newobj = new classname1(1);

class newclass {
    public function test(classname1 $newobj) {
        echo $newobj->display();
    }
}

$foo = new newclass;
$foo->test($newobj);

?>

Son ama en azından, sen tekil cepten desen arıyor olabilir değil:

http://en.wikipedia.org/wiki/Singleton_pattern