父类:P
1 class P{ 2 private $name=""; 3 function __construct(){ 4 $this->name="hello"; 5 } 6 public function __set($name, $value){ 7 $this->$name=$value; 8 } 9 public function showName(){ 10 echo $this->name; 11 } 12 }
子类:C
1 class C extends P{ 2 function __construct(){ 3 parent::__construct(); 4 5 //想在这里给P类的$name换个值(你好)怎么做? 6 } 7 }
$c=new C;
$c->showName;
然后输出:你好
怎么实现?
实现:
class C extends P
{
function __construct()
{
parent::__construct();
$this->name = "你好";
}
}
$c = new C;
$c->showName();
//原理:子类继承父类后,则子类就可以使用父类中所有的方法,包括魔术方法; 子类中调用父类构造方法,先得到$this->name = 'hello';随后进行赋值,会直接调用__set()方法,对name进行赋值'你好', 所以$this->showName()输出'你好'。
构造函数得传参吧
1 class C extends P{ 2 function __construct(){ 3 parent::__construct(); 4 //想在这里给P类的$name换个值(你好) 5 $this->name="你好"; 6 } 7 }