php魔术方法(一)

来源:互联网 发布:nginx htaccess配置 编辑:程序博客网 时间:2024/05/17 06:14

PHP中的魔术方法

1.__get

用途:读取私有的成员属性,传入一个参数

例子:
<?phpClass Person{private $_name = '花花';private $_age = 18;private $_sex = '女';public function __get($name){$allowVars = ['_name','_age'];if (in_array($name,$allowVars)) {return $this->$name;}}}$p = new Person();echo $p->_name;echo $p->_age;echo $p->_sex;

输出结果为

花花18

2.__set

用途:修改和设置私有的成员属性,两个参数(属性名,值)

例子:
<?phpClass Person{<span style="white-space:pre"></span>private $_name = '花花';<span style="white-space:pre"></span>private $_age = 18;<span style="white-space:pre"></span>private $_sex = '女';<span style="white-space:pre"></span>public function __get($name)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>return $this->$name;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public function __set($key,$value)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>return $this->$key = $value;<span style="white-space:pre"></span>}}$p = new Person();$p->_name = '小布';echo $p->_name;

输出结果为

小布

注意:使用set方法时需要配合使用get方法

3.__unset

用途:删除和销毁私有成员属性时触发,一个参数

例子:
<?phpClass Person{<span style="white-space:pre"></span>private $_name = '花花';<span style="white-space:pre"></span>private $_age = 18;<span style="white-space:pre"></span>private $_sex = '女';<span style="white-space:pre"></span>public function __get($name){<span style="white-space:pre"></span>return $this->$name;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public function __unset($name)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>unset($this->$name);<span style="white-space:pre"></span>}}$p = new Person();unset($p->_name);echo $p->_name;

输出结果为


4.__isset

用途:删除和销毁私有成员属性时触发,一个参数

例子:
<?phpClass Person{<span style="white-space:pre"></span>private $_name = '花花';<span style="white-space:pre"></span>private $_age = 18;<span style="white-space:pre"></span>private $_sex = '女';<span style="white-space:pre"></span>public function __isset($name)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>if (isset($this->$name)) {<span style="white-space:pre"></span>echo '设置过';<span style="white-space:pre"></span>} else {<span style="white-space:pre"></span>echo '未设置过';<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}}$p = new Person();isset($p->_name);isset($p->_home);

输出结果为

设置过 未设置过



3.__construct

用途:实例化一个对象时自动执行,参数自己规定

例子:
<?phpClass Person{<span style="white-space:pre"></span>private $_name;<span style="white-space:pre"></span>private $_age;<span style="white-space:pre"></span>private $_sex;<span style="white-space:pre"></span><span style="white-space:pre"></span>public function __construct($name,$age,$sex)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>$this->_name = $name;<span style="white-space:pre"></span>$this->_age = $age;<span style="white-space:pre"></span>$this->_sex = $sex;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public function __get($name)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>return $this->$name;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}$p = new Person('花花',18,'女');echo $p->_name;echo $p->_age;

输出结果为

<span style="font-size:12px;">花花18</span>




0 0