Jef*_*eff 2 php inheritance class parent-child
这不符合我的想法.这是我的课程:
class App {
public $db;
public function __construct($db) {
$this->db = $db;
}
}
class Analysis extends App {
public $analysis_id;
public function __construct($analysis_id) {
$this->analysis_id = $analysis_id;
}
}
class Standard extends Analysis {
public function __construct($analysis_id) {
parent::__construct($analysis_id);
}
}
Run Code Online (Sandbox Code Playgroud)
$db 是我传递给App类的数据库(mysqli)对象.
当我尝试执行新的标准分析时,我这样启动它:
$analysis = new Standard($analysis_id);
Run Code Online (Sandbox Code Playgroud)
Analysis类包含检索有关分析的元数据的方法,而Standard类包含检索特定类型分析的计算的方法.我以为我能够访问该$db对象,但我无法从Analysis或Standard类中访问.$db我启动它时是否需要将对象传递给Standard类?
您的Analysis类需要在其父级上调用构造函数App.默认情况下不会发生这种情况.因为$db是App构造函数的参数,所以你必须从子类中传入它,然后parent::__construct($db)从Analysis构造函数调用 .
正确的代码:
class App {
public $db;
public function __construct($db) {
$this->db = $db;
}
}
class Analysis extends App {
public $analysis_id;
public function __construct($analysis_id, $db) {
$this->analysis_id = $analysis_id;
parent::__construct($db);
}
}
class Standard extends Analysis {
public function __construct($analysis_id, $db) {
parent::__construct($analysis_id, $db);
}
}
$analysis = new Standard($analysis_id, $db);
Run Code Online (Sandbox Code Playgroud)