国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP的攔截器實例分析

2024-05-04 23:26:42
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP的攔截器,以實例形式分析了常見的各類攔截器的用法,非常具有實用價值,需要的朋友可以參考下
 
 

本文實例講述了PHP的攔截器用法。分享給大家供大家參考。具體如下:

PHP提供了幾個攔截器,用于在訪問未定義的方法和屬性時被調用,如下所示:

1、__get($property)
功能:訪問未定義的屬性是被調用

2、__set($property, $value)
功能:給未定義的屬性設置值時被調用

3、__isset($property)
功能:對未定義的屬性調用isset()時被調用

4、__unset($property)
功能:對未定義的屬性調用unset()時被調用

5、__call($method, $arg_array)
功能:調用未定義的方法時被調用

下面將通過一個小程序來說明這些攔截器的用途:

復制代碼代碼如下:
class intercept_demo{
    private $xingming = "";
    private $age = 10;
   
    // 若訪問一個未定義的屬性,則將調用get{$property}對應的方法
    function __get($property){
        $method = "get{$property}";
        if (method_exists($this, $method)){
            return $this->$method();
        }
    }

 

    // 若給一個未定義的屬性設置值,則將調用set{$property}對應的方法
    function __set($property, $value){
        $method = "set{$property}";
        if (method_exists($this, $method)){
            return $this->$method($value);
        }   
    }
   
    // 若用戶對未定義的屬性調用isset方法,
    function __isset($property){
        $method = "isset{$property}";
        if (method_exists($this, $method)){
            return $this->$method();
        }
    }
   
    // 若用戶對未定義的屬性調用unset方法,
    // 則認為調用對應的unset{$property}方法
    function __unset($property){
        $method = "unset{$property}";
        if (method_exists($this, $method)){
            return $this->$method();
        }
    }
   
    function __call($method, $arg_array){
        if (substr($method,0,3)=="get"){
            $property = substr($method,3);
            $property = strtolower(substr($property,0,1)).substr($property,1);
            return $this->$property;
        }
    }
   
    function testIsset(){
        return isset($this->Name);
    }
   
    function getName(){
        return $this->xingming;
    }
   
    function setName($value){
        $this->xingming = $value;
    }
   
    function issetName(){
        return !is_null($this->xingming);
    }
   
    function unsetName(){
        $this->xingming = NULL;
    }
}

$intercept = new intercept_demo();
echo "設置屬性Name為Li";
$intercept->Name = "Li";
echo "/$intercept->Name={$intercept->Name}";
echo "isset(Name)={$intercept->testIsset()}";
echo "";
echo "清空屬性Name值";
unset($intercept->Name);
echo "/$intercept->Name={$intercept->Name}";
echo "";
echo "調用未定義的getAge函數";
echo "age={$intercept->getAge()}";

 

希望本文所述對大家的PHP程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康乐县| 开原市| 澳门| 军事| 富平县| 溆浦县| 两当县| 阿巴嘎旗| 前郭尔| 垦利县| 巴楚县| 洛浦县| 六枝特区| 兴安盟| 呼图壁县| 贵德县| 景洪市| 浦城县| 泊头市| 黄梅县| 山西省| 铜鼓县| 邢台县| 阿拉尔市| 昭苏县| 大兴区| 于都县| 钟祥市| 皋兰县| 乌拉特后旗| 罗甸县| 库尔勒市| 武川县| 秀山| 玛多县| 曲阜市| 奉贤区| 杭锦后旗| 钦州市| 嘉义县| 高碑店市|