码迷,mamicode.com
首页 > Web开发 > 详细

php学习九:存取器&魔术方法

时间:2017-03-30 19:23:50      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:方法调用   检验   isset   else   amp   dog   getname   val   student   

当声明属性的时候用到了private,那么的话只能本类中才能访问此属性,其他地方无法使用,这个时候需要给外界提供一些方法来使外界访问

方法一:存取器:

可以提供一个public的方法来使外界对类里面的属性进行访问和赋值

class Student
{
    private $name;
    private $age;
    public function show(){
        echo "{$this->name}今年{$this->age}岁了";
    }
    /*****存取器:get,set******/
    /****提供set方法给外界赋值***/
    public function setName($name){
        $this->name=$name;
    }
    public function setAge($age){
        if($age<0){
            $this->age = "18";
        }else{
            $this->age=$age;
        }
    }

    /******提供get方法给外界取值**********/
    public function getName(){
        return $this->name;
    }
    public function getAge(){
        return $this->age;
    }
}

 实例化的代码:

$stu = new Student();
/*****不能直接访问,需要用类里面的set,get方法来访问******/
$stu->setName("房明");
echo $stu->getName();

$stu->setAge(-18);
echo $stu->getAge();

$stu->show();

  

方法二:魔术方法进行访问

在php中文诶我们提供了许多的魔术方法,在这里我们只要是某某一个魔术方法就可以完成我们想要的效果

*__set():赋值
* __get():取值
* __isset():是否有这个属性
* __unset():销毁某个属性

代码如下:
class User
{
    private $name;
    private $age;

    /*****__set():赋值****/
    function __set($name,$value)
    {
        if($name == "age"){
            if($value <18){
                $this->age = 18;
            }else{
                $this->age = $value;
            }
        }else{
            $this->$name = $value;
        }
    }

    /****__get():取值***/
    function __get($name)
    {
        if($name == "name"){
            return "dog";
        }else{
            return $this->$name;
        }
    }

    /***** __isset():是否有这个属性****/
    //当当前属性被isset()或者empty(),即当某个属性被检验空的方法调用的时候,会触发这个方法
    function __isset($name)
    {
        echo "{$name}isset被调用了";
    }

    /*******__unset():销毁某个属性******/
    //
    function __unset($name)
    {
        echo "{$name}被销毁了";

        //防止被销毁的时候直接写一个return即可;
    }

    public function show(){
        echo "{$this->name}今年{$this->age}岁了";
    }
}

  魔术方法进行访问:

$user = new User();
$user->name = "房明";
$user->age = 10;
echo $user->name;

echo $user->age;

$user->show();

isset($user->name);

unset($user->name);

  

php学习九:存取器&魔术方法

标签:方法调用   检验   isset   else   amp   dog   getname   val   student   

原文地址:http://www.cnblogs.com/mmykdbc/p/6647312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!