奇怪的构造函数行为

时间:2013-09-05 18:33:42

标签: laravel eloquent laravel-3

我的模型构造函数存在问题。我使用Laravel-3和Eloquent ORM。

以下是我期望的行为:

Class A{
    $dat_var = 1;
    public function __construct{
        $this->dat_var = 2;
    }
}

Class B extends A{
    public function __construct{
        echo 'before : '.$var;
        parent::__construct();
        echo 'after: '.$var;
    }
}

Class Test{
    public function myTestMethod2(){
        $b = new B();
    }
}

myTestMethod1()的结果:

before : 1
after : 2

但是使用扩展Eloquent的Laravel对象,变量将被取消,直到对象完成构建。我想这与我在Eloquent模型中需要的变量是从DB加载的事实有关。但无论如何,是否有任何优雅的解决方案我做错了什么

这是我的数据库表:

--------------
-table_c     -
--------------
-id  | my_var-
--------------
-1   | 5     -
--------------

以下是我的laravel代码:

Class C extends Eloquent{
    public static $table = 'table_c';

    public function __construct{
        //Usefull things here
        parent::__construct();
        echo 'In construct : '.$this->my_var;
    }
}

Class Test{
    public function myTestMethod2(){
        $c = C::find('1');
        echo 'Construct finish : '.$c->my_var
    }
}

myTestMethod2()的结果:

In construct :
Construct finish : 5

我对myTestMethod2()的期望:

In construct : 5
Construct finish : 5

0 个答案:

没有答案