PHP从另一个实例声明类变量

时间:2013-12-18 01:29:26

标签: php class variable-assignment

我很难弄清楚如何在php中为实例化类添加变量值, 我一直在看reflectionClass并试图返回一个指定的变量,现在我最终得到了一个getter setter。 我真的很感激一些帮助,这是我的代码示例:

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();

然后从控制器类中执行操作。

2 个答案:

答案 0 :(得分: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。通过扩展类或仅使用魔术方法来访问模型,可能还有其他方法可以实现您的目标。

答案 1 :(得分: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();