你看看这段代码有问题吗class Room {
private $door;
private $window;
function __construct ($door="",$window=""){
$this->door=$door;
$this->window=$window;
}
function __set($name,$value){
$this->$name=$value;
}
function roomlist (){
echo "<br/>门是:".$this->door."<br/>窗户是:".$this->window;
}
}
class oferroom extends Room {
private $computer;
function __construct($door,$window,$computer){
$this->door=$door;
$this->window=$window;
$this->computer=$computer;
}
function roomlist(){
parent::roomlist();
echo "<br/>电脑是:".$this->computer;
}
}$ofer=new oferroom ("铁门","没窗户","联想电脑");//var_dump($ofer); // object(oferroom)#1 (2) { ["door":"Room":private]=> string(4) "铁门" ["window":"Room":private]=> string(6) "没窗户" }
$ofer->roomlist();
$ofer->door="tata木门";
$ofer->roomlist();这个通过$ofer->door="tata木门";能改变$ofer->roomlist();的输出结果;但是如果改为$ofer->computer="华硕电脑";,然后再用$ofer->roomlist();输出一下就会发现“电脑项”的值并没有改变,也就是__set()只对父类的成员属性有效果!
private $door;
private $window;
function __construct ($door="",$window=""){
$this->door=$door;
$this->window=$window;
}
function __set($name,$value){
$this->$name=$value;
}
function roomlist (){
echo "<br/>门是:".$this->door."<br/>窗户是:".$this->window;
}
}
class oferroom extends Room {
private $computer;
function __construct($door,$window,$computer){
$this->door=$door;
$this->window=$window;
$this->computer=$computer;
}
function roomlist(){
parent::roomlist();
echo "<br/>电脑是:".$this->computer;
}
}$ofer=new oferroom ("铁门","没窗户","联想电脑");//var_dump($ofer); // object(oferroom)#1 (2) { ["door":"Room":private]=> string(4) "铁门" ["window":"Room":private]=> string(6) "没窗户" }
$ofer->roomlist();
$ofer->door="tata木门";
$ofer->roomlist();这个通过$ofer->door="tata木门";能改变$ofer->roomlist();的输出结果;但是如果改为$ofer->computer="华硕电脑";,然后再用$ofer->roomlist();输出一下就会发现“电脑项”的值并没有改变,也就是__set()只对父类的成员属性有效果!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货