为了账号安全,请及时绑定邮箱和手机立即绑定

关于PHP中魔术方法__set 是否会死循环的疑惑

关于PHP中魔术方法__set 是否会死循环的疑惑

PHP
amateur 2015-12-20 11:22:05
public function __construct() {     $this->name = "moumou"; }属性name未定义,在构造函数中动态添加public function __set($name, $value){     echo "<br/>name : ".$name.",  value : ".$value;     $this->$name = $value; }自定义__set函数,其中$this->$name=$value 进行属性动态复制, 好奇这个过程不是个死循环过程?(实际不是死循环)疑惑中,还请大神给个指教,比较钻技术的牛角尖
查看完整描述

1 回答

?
LUCK星001

TA贡献19条经验 获得超21个赞

<?php 
class Person 

//下面是人的成员属性,都是封装的私有成员 
private $name; //人的名子 
private $sex; //人的性别 
private $age; //人的年龄 
//__get()方法用来获取私有属性 
private function __get($property_name) 

echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>"; 
if(isset($this->$property_name)) 

return($this->$property_name); 

else 

return(NULL); 


//__set()方法用来设置私有属性 
private function __set($property_name, $value) 

echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>"; 
$this->$property_name = $value; 


$p1=newPerson(); 
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值 
$p1->name="张三"; 
$p1->sex="男"; 
$p1->age=20; 
//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值 
echo "姓名:".$p1->name."<br>"; 
echo "性别:".$p1->sex."<br>"; 
echo "年龄:".$p1->age."<br>"; 
?> 

查看完整回答
1 反对 回复 2015-12-20
  • 1 回答
  • 1 关注
  • 1167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信