如果我有这个课程:
<?php
class Model
{
var $db;
function Model()
{
$this->db=new Db_Class();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
以及扩展父类的第二个类:
<?php
class LessonModel extends Model
{
public function LessonModel()
{
//code here
}
public function getTitle($id)
{
$this->db->setTable('myTable');
return $this->db->get('title',$id);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
是否可以安全地假设该$LessonModel->db字段已由父Model类的构造函数实例化,或者我是否需要使用类似的东西手动运行它parent::Model();?
Tom*_*igh 10
您不能假设已经调用了父构造函数,因为您已在子类中重写了它.你需要parent::Model()按照你的建议打电话.如果你改变你继承的类,你显然需要改变它.
如果您使用的是PHP5,那么您可以为构造函数命名__construct().这样做的好处是可以通过parent::__construct()在任何派生类中执行而无需指定父类名来轻松调用父构造函数.然后,您可以重新安排类的继承,减少麻烦,减少引入模糊错误的危险.