PHP的类的private变量调用问题?

类中的变量设置成private,只能在类的内部使用。而函数__get();__set()是在创建对象时自动调用为对象的public变量声明的。为什么对private变量也... 类中的变量设置成private,只能在类的内部使用。而函数__get(); __set()是在创建对象时自动调用为对象的public变量声明的。为什么对private变量也能进行赋值调用了???
<?php
class Person
{
private $name; //人的名子
private $sex; //人的性别
private $age; //人的年龄
public function __get($property_name)
{
echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
if(isset($this->$property_name)){
return($this->$property_name);
}else{
return(NULL);
}
}
public function __set($property_name, $value)
{
echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";
$this->$property_name = $value;
}
}
$p1=new Person();
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
echo "姓名:".$p1->name."<br>";
echo "性别:".$p1->sex."<br>";
echo "年龄:".$p1->age."<br>";
?>
展开
 我来答
创作者BbPV9CfuDM
2015-01-21 · TA获得超过1445个赞
知道小有建树答主
回答量:977
采纳率:85%
帮助的人:183万
展开全部
因为__get(); __set() 方法在类的内部,类的内部是可以调用类的私有属性的变量
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式