__unset()这是怎么了
class person {
private $name;
private $age;
private $sex;
//2. 构造方法 //作用: 给对象属性初始值
function __construct($name='', $age='0', $sex='男'){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
private function __set($proname, $provalue){
if($proname == 'age'){
if($provalue100){
echo '设置的年龄不合法';
return;
}else{
$this->$proname=$provalue;
echo $this->age.'
';
}
}
}
private function __get($proname){
if($proname == 'age'){
echo ($this->$proname-20).'
';
}
}
private function __isset($proname){
if(isset($this->$proname)){
echo $this->$proname.'存在
';
return;
}
echo $proname.'不存在
';
}
private function __unset($proname){
unset($this->$proname);
}
function say(){
echo 'name........'.$this->name.'|age.........'.$this->age.'|sex..........'.$this->sex.'
';
}
function __destruct(){
}
}
$p1 = new person('yeteng', 26, '男');
$p2 = new person('yeben', 28, '男');
$p3 = new person('wenjing', 40, '女');
$p1->age=99; //自动触发__set
$p1->age; //自动触发__get
isset($p1->name);//自动触发__isset
unset($p1->age); //自动触发__unset
$p1->say();
------解决方案--------------------
全部的魔术方法都必须是全局的(public)