首頁  >  文章  >  後端開發  >  淺談PHP攔截器之__set()與__get()的理解與使用方法_php實例

淺談PHP攔截器之__set()與__get()的理解與使用方法_php實例

WBOY
WBOY原創
2016-12-05 13:28:211078瀏覽

「一般來說,總是把類別的屬性定義為private,這比較符合現實的邏輯。

但是,對屬性的讀取和賦值操作是非常頻繁的,因此在PHP5中,預定義了兩個函數“__get()”和“__set()”來獲取和賦值其屬性,以及檢查屬性的“ __isset()」和刪除屬性的方法「__unset()」。

我們為每個屬性做了設定和取得的方法,在PHP5中給我們提供了專門為屬性設定值和取得值的方法,「__set()」和「__get()」這兩個方法,這兩個方法不是預設存在的,而是我們手工添加到類別裡面去的,像構造方法(__construct())一樣,類別裡面添加了才會存在,可以按下面的方式來添加這兩個方法,當然也可以依個人的風格來新增:「

<&#63;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()的理解與使用方法全部內容了,希望大家多多支持腳本之家~

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn