php 实现get,set方式读取属性值

来源:互联网 发布:最优化求解软件 编辑:程序博客网 时间:2024/05/22 06:54

      JavaBan中的通过get,set方式获取/设置属性值,同时在jstl可以通过对象名.属性名的方式读取属性值。如果想在php中实现前述功能如何处理呢。php需要通过__get和__set两个魔术方法实现java中的get,set方法

    /**     * 通过魔术方法实现javabean的get方法     * @param $name    参数名     * @return mixed   自动调用对应的方法名     */    public function __get($name){        $getter = 'get'.ucfirst($name);        if (method_exists($this, $getter)) {            return $this->$getter();        }elseif (method_exists($this, 'set'.$name)){            throw new Exception('read-only property:'.$name);        }else{            throw new Exception('unknown property:'.$name);        }    }    /**     * 通过魔术方法实现javabean的set方法     * @param $name   参数名     * @param $value  参数值     */    public function __set($name, $value){        $setter = 'set'.ucfirst($name);        if (method_exists($this, $setter)) {            $this->$setter($value);        }elseif (method_exists($this, 'get'.$name)){            throw new Exception('write-only property:'.$name);        }else {            throw new Exception('unknown property:'.$name);        }    }


0 0