zoukankan      html  css  js  c++  java
  • PHP拦截器之__set()与__get()的理解与使用

    一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法“__unset()”。我们为每个属性做了设置和获取的方法,在PHP5中给我们提供了专门为属性设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样, 类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:“

    <?php
    //拦截器的使用
    class Computer{
    private $name;
    private $price;
    private $cpu;
    private $clocked;

    //拦截器之赋值
    public function __set($key,$value){
    //那么:$key=name $value="联想" 则有: $this->name="联想"
    return $this->$key=$value;
    }

    //拦截器之取值
    public function __get($key){
    if (isset($key)){
    //那么: $key=name 则$this->name 所以自然就return了"联想"
    return $this->$key;
    }else {
    return NULL;
    }
    }
    }
    //正是因为的拦截器存在,才能如此用
    $computer=new Computer();
    $computer->name="联想";
    $computer->price=5600;
    $computer->cpu="八核";
    $computer->clocked="1600hz";

    echo $computer->name;
    echo $computer->price;
    echo $computer->cpu;
    echo $computer->clocked;

  • 相关阅读:
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    linux中的cd ..和cd -命令有什么区别?
    GCC使用
  • 原文地址:https://www.cnblogs.com/imysql/p/5330766.html
Copyright © 2011-2022 走看看