魔术方法__get()、__set()

<?php
class Person{
    private $name;
    private $sex;
    private $age;
    private $addr;
    function __construct($name="", $sex="male", $age=0, $addr=""){
        $this->name=$name;
        $this->sex=$sex;
        $this->age=$age;
        $this->addr=$addr;
    }
    function __destruct(){
        //echo "Exit successfully.";
    }
    //magic method __set()
    function __set($property,$value){
        if($property=="sex"){
            if(!($value=="male" || $value=="female")){
                return;
            }
            $this->$property=$value;
        }

        if($property=="age"){
            if($value>150 || $value<0){
                //die("Unsuitable age value.<br/>");
                return;
            }
            $this->$property=$value;
        }
    }
    function __get($property){
        if($property=="sex"){
            return "It's a secret.<br/>";
        }
    }

    function run(){
        echo $this->name." is running.".$this->leftLeg()." and then  ".$this->rightLeg().".<br/>";
    }
    private function leftLeg(){
        return "move left leg";
    }
    private function  rightLeg(){
        return "move right leg";
    }
    function say(){
        echo "I am".$this->name.", ",$this->age." years old, ".$this->sex.". And I live in ".$this->addr."<br/>";
    }

}
$Lee=new Person("Bruce Lee","female",23,"ShangHai");
$Lee->age=250;
$Lee->sex="male";
$Lee->say();
echo "sex: ".$Lee->sex;


转载于:https://my.oschina.net/u/1270735/blog/371040

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值