2013-12-18 73 views
1

我很難搞清楚如何在php中添加一個變量值到實例化的類,我一直在看reflectionClass並試圖返回一個賦值變量,現在我最後是一個吸氣二傳手。 我真的很感激一些幫助,下面是我的代碼示例:PHP從另一個實例聲明類變量

class controller 
{ 

    public $models; 

    private $load; 

    public function __construct() 
    { 
     $this->load = new loader(); 
    } 

    public function action_being_run() 
    { 
     $this->load->set_model('model_name'); 
    } 

} 

class loader 
{ 

    public function set_model($name) 
    { 
     {controller_class}->models[$name] = new model(); 
    } 

} 

控制器類,而不將其分配給一個變量實例化,但只是:

new controller(); 

,然後執行該操作從控制器類中。

+0

你可以注入在'loader'對象的構造函數的'controller'對象; '$ this-> load = new loader($ this);'等等 – jeroen

回答

1

你可以傳遞給$this參考到set_model()

class controller 
{ 

    public $models; 

    private $load; 

    public function __construct() 
    { 
     $this->load = new loader(); 
    } 

    public function action_being_run() 
    { 
     $this->load->set_model('model_name', $this); 
    } 

} 

class loader 
{ 

    public function set_model($name, &$this) 
    { 
     {controller_class}->models[$name] = new model(); 
    } 

} 

你也需要改變public $modelpublic $models。有可能通過擴展一個類或只使用魔術方法來訪問模型來實現你想要的其他方法。

+0

謝謝!這一定是我沒有想到的唯一的事情。謝謝! :) – Sune

0

像這樣:

class tester{ 
    public function lame(){ 
    return 'super lame'; 
    } 
} 
function after(){ 
    return 'after function'; 
} 
$tst = new tester; $tst->afterVar = 'anything'; $tst->afterFun = 'after'; 
echo $wh->afterVar; 
echo $wh->afterFun();