1. __set() 方法用于設置私有屬性值。
2. __get() 方法用于獲取私有屬性值。
3. __isset() 方法用于檢測私有屬性值是否被設定。
4. __unset() 方法用于刪除私有屬性。
實際應用中,經常會把類的屬性設置為私有(private),那么需要對屬性進行訪問時,就會變得麻煩。雖然可以將對屬性的訪問寫成一個方法來實現,但 PHP 提供了一些特殊方法來方便此類操作。
__set()
> __set() 方法用于設置私有屬性值:
~~~
function __set($property_name, $value)
{
$this->$property_name = $value;
}
~~~
在類里面使用了 __set() 方法后,當使用 $p1->name = "張三"; 這樣的方式去設置對象私有屬性的值時,就會自動調用 __set() 方法來設置私有屬性的值。
* * * * *
__get()
> __get() 方法用于獲取私有屬性值:
~~~
function __get($property_name)
{
return isset($this->$property_name) ? $this->$property_name : null;
}
~~~
例子:
~~~
<?php
class Person {
private $name;
private $sex;
private $age;
//__set()方法用來設置私有屬性
function __set($property_name, $value) {
//在直接設置私有屬性值的時候,自動調用了這個 __set() 方法為私有屬性賦值
$this->$property_name = $value;
}
//__get()方法用來獲取私有屬性
function __get($property_name) {
//在直接獲取私有屬性值的時候,自動調用了這個 __get() 方法
return isset($this->$property_name) ? $this->$property_name : null;
}
}
$p1=new Person();
//直接為私有屬性賦值的操作, 會自動調用 __set() 方法進行賦值
$p1->name = "張三";
//直接獲取私有屬性的值, 會自動調用 __get() 方法,返回成員屬性的值
echo "我的名字叫:".$p1->name;
?>
~~~
運行該例子,輸出:
> 我的名字叫:張三
__isset()
* * * * *
> __isset() 方法用于檢測私有屬性值是否被設定。如果對象里面成員都是公有的,可以直接使用 isset() 函數。如果是私有的成員屬性,就需要在類里面加上一個 __isset() 方法,這樣當在類外部使用 isset() 函數來測定對象里面的私有成員是否被設定時,就會自動調用 __isset() 方法來檢測。
~~~
private function __isset($property_name)
{
return isset($this->$property_name);
}
~~~
__unset()
* * * * *
> __unset() 方法用于刪除私有屬性。同 isset() 函數一樣,unset() 函數只能刪除對象的公有成員屬性,當要刪除對象內部的私有成員屬性時,需要使用__unset() 方法:
~~~
private function __unset($property_name)
{
unset($this->$property_name);
}
~~~
- 數組
- 深拷貝
- 數組操作
- 交/并/合
- 差值
- 搜索
- 排序
- 貨幣
- 字符串
- 補全
- heredoc
- session
- 注銷
- 限時自動注銷
- 日期時間
- 日期時間
- 某月首尾
- 格式判斷
- 年齡計算
- 時間函數
- strtotime
- 版本升級
- $HTTP_RAW_POST_DATA
- 正則函數等
- 版本比較
- php5.3 PHP5.4 PHP5.5 php5.6 新特性
- PHP注釋
- URL地址
- 頁面超時
- 類方法
- 靜態方法
- 子類靜態方法
- 普通方法和靜態方法
- call_user_func 和 call_user_func_array
- 函數
- 動態函數
- 數組循環
- Math函數
- 取整
- 除數余數
- 運行模式
- CLI 模式
- 常用CLI命令
- 檢測環境支持php_cli模式?
- 調試
- 調試工具
- FirePHP
- ChromePHP
- 內置服務器
- 500 錯誤處理
- 命令行
- 遠程操作
- HTTP
- HTTP headers
- 用例
- 保留字
- 教程
- PHP實戰教程-0基礎快速入門
- 接口與抽象類
- 抽象類與接口的區別
- 魔術方法
- 私有屬性方法
- 構造/析構方法
- PHP Error 和 Logging 函數
- 類
- const