class Node{
private $node;
private $next;
//使用构造函数直接为私有变量赋值
public function __construct($node){
$this->node = $node;
}
//采用__set魔术方法为变量赋值,当调用$obj->任一属性时,会自动调用该魔术方法进行赋值
public function __set($property_name,$value){
//注意这里是$this->$property_name而不是$this->property_name
//是因为如果是$this->property_name,则表示是为当前类property_name是属性赋值了,而property_name属性是不存在的,就会报错
//$this->$property_name的意思是指,利用$property_name作为一个变量表示需要真正赋值的属性,这样才能实现魔术方法为任一属性赋值的通用性
//也就是说当在使用类的对象赋值属性时$objNode->next,变量$property_name为next,其实在最后执行时就是$this->next = $value;
$this->$property_name = $value;
}
//采用__get魔术方法为变量取值,当调用$obj->任一属性时,会自动调用该魔术方法进行取值
public function __get($property_name){
//这里与__set一样为$this->$property_name
return $this->$property_name;
}
}
$objNode = new Node(1);
echo $objNode->node;
echo "\n";
$objNode->next = 2;
echo $objNode->next;
echo "\n";
输出结果:
结果
网友评论