2013-12-18 4 views
1

Мне сложно определить, как добавить значение переменной в экземпляр класса в php, Я смотрел на отражениеClass и пытался вернуть назначенную переменную, и теперь я В итоге у меня был сеттер. я бы очень признателен за помощь, вот пример моего кода: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

Вы можете вводить 'controller' объект в конструкторе' loader' объекта; '$ 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 $model к public $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(); 
Смежные вопросы