为什么实例化模型类之后先执行父类的构造函数?
我写了个自己的模型类所有模型类都基于这个模型class MY_Model extends CI_Model
public $table;
public function __construct()
{
$this->table = '456';
echo $this->table;
parent::__construct();
}
class User_model extends MY_Model
{
public function __construct()
{
$this->table = '123';
echo $this->table;
parent::__construct();
}
}
$this->load->model('user_model');
为什么执行结果是“456123”而不是"123456"?
虽然小的学艺不精,入门级别,但是看这个代码,第一个构造函数里已经输出了456,第二个构造函数又输出了123,那连起来不是456123吗,程序不是按照逐行语句执行的吗? 因為你使用了繼承,且你把它放在建構子裏,繼承後當然是先執行建構子,所以456就跑出來了. Raphael 发表于 2013-6-24 10:26 static/image/common/back.gif
因為你使用了繼承,且你把它放在建構子裏,繼承後當然是先執行建構子,所以456就跑出來了. ...
我知道我使用了继承啊 但是继承的意义是用父类来实例化类的吗?
注意:parent::__construct();
你手动执行了父类构造函数,否则 PHP 是不会自动帮你执行的。 Hex 发表于 2013-6-24 11:41 static/image/common/back.gif
注意:parent::__construct();
你手动执行了父类构造函数,否则 PHP 是不会自动帮你执行的。 ...
是啊不过我是先把成员变量赋值为123之后才执行父类的构造函数把它变成456的啊 为什么实际情况是先执行了父类的构造函数然后才执行子类的构造函数?
http://codeigniter.org.cn/forums/data/attachment/album/201306/24/150006oj99mfr63bhffb3d.gif stalkerru 发表于 2013-6-24 15:00 static/image/common/back.gif
是啊不过我是先把成员变量赋值为123之后才执行父类的构造函数把它变成456的啊 为什么实际情况是先执行 ...
这个貌似是有点奇怪,你的 PHP 版本是?
php版本是5.4 class MY_Model {
public $table;
public function __construct()
{
$this->table = '456';
echo $this->table;
parent::__construct();
}
}
class User_model extends MY_Model
{
public function __construct()
{
$this->table = '123';
echo $this->table;
parent::__construct();
}
}
$obj =new User_model;
看起来应该是 123456
页:
[1]
2