「一般來說,總是把類別的屬性定義為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;
以上就是小編為大家帶來的淺談PHP攔截器之__set()與__get()的理解與使用方法全部內容了,希望大家多多支持腳本之家~