魔术方法__set()和__get()

<?php
   class person
   {
  	private $name;
  	private $sex;
  	private $age;
  	
  	function __construct($name="",$sex='男',$age=90)
  	{
  		$this->name=$name;
  		$this->sex=$sex;
  		$this->age=$age;
  	}
  	public function __set($nam,$val){
  		if($nam=="sex"){
  			if(!($val=='男'||$val=='女')){
  			return;
  			}
  		}
  		if($nam=="age"){
  			if($val>150||$val<0){
  			return;
  			}
  		}
  		$this->$nam=$val;
  	}
  	public function __get($n){
  		if($n=="sex"){
  			return "保密";
  		}
  		elseif($n=="age"){
  			if($this->age>40)
  			   return $this->age-10;
  			else
  			   return $this->$n;
  		}
  		else{
  		return $this->$n;
  		}
  	}
  	public function info()
  	{
  		echo"我的名字是:".$this->name."  性别:".$this->sex."  年龄:".$this->age."<br>";
  	}
  	
  	function __destruct()
  	{
  		echo"再见".$this->name."<br>";
  	}
  }
  $person1=new person("张三",'男',80);
  echo"姓名:",$person1->name."<br>";
  echo"性别:",$person1->sex."<br>";
  echo"年龄:",$person1->age."<br>";
  echo$person1->info()."<br>";
  $person1->name="李四";
  $person1->sex='女';
  $person1->age=60;
  echo$person1->info()."<br>";
  $person1->sex="保密";
  $person1->age=600;
  echo$person1->info()."<br>";
?>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值