父类是从子类外部构造的,因此,它的构造函数不能从子内部调用。在这种情况下,如何从孩子那里获取父母的属性。
示例:
class MyParent {
protected $args;
protected $child;
public function MyParent($args=false){
$this->args=$args;
$this->child=new MyChild();
}
public function main(){
$this->child->printArgs();
}
}
class MyChild extends MyParent{
public function MyChild(){}
public function printArgs(){
Echo "args: ".$this->args['key']." = ".$this->args['value']."\n";
}
}
$parent=new MyParent(array('key'=>'value'));
$parent->main();
运行时返回空变量:
jgalley@jgalley-debian:~/code/otest$ php run.php
args: =
答案 0 :(得分:1)
__construct()
是构造函数。您正在使用古代PHP4的变体。
您实现两个完全不同的对象,因此属性$args
当然是完全独立的。
abstract class MyParent {
protected $args;
public function __construct($args=false){
$this->args=$args;
}
public function main(){
$this->printArgs();
}
abstract public function printArgs();
}
class MyChild extends MyParent{
public function printArgs(){
Echo "args: ".$this->args['key']." = ".$this->args['value']."\n";
}
}
$$object=new MyChild(array('key'=>'value'));
$object->main();
这至少有效,但问题是,我不确切知道设计目标是什么。因为它似乎是一种cli-Application,你应该看看现有的解决方案,以获得一个想法,如何解决它。