国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 团风县| 横峰县| 平原县| 景洪市| 清水河县| 昌吉市| 汽车| 浦北县| 潼关县| 沛县| 河曲县| 太康县| 揭西县| 图木舒克市| 京山县| 灵山县| 尤溪县| 四川省| 射阳县| 普兰县| 峨山| 台湾省| 裕民县| 安乡县| 海安县| 福泉市| 惠水县| 图们市| 顺义区| 临汾市| 印江| 西乌珠穆沁旗| 云安县| 北安市| 和平区| 泉州市| 彭山县| 镇安县| 武平县| 武城县| 深水埗区|