開源外貿電商系統opencart中controller.php中的__get方法

2019-10-23 21:51:12 3

在PHP中存在一些特殊的方法,例如: __set()、__get()、__isset() 與 __unset()。

__set() 方法用于設置私有屬性值。 

__get() 方法用于獲取私有屬性值。 

__isset() 方法用于檢測私有屬性值是否被設定。

__unset() 方法用于刪除私有屬性。

實際應用中,經常會把類的屬性設置為私有(private),那么需要對屬性進行訪問時,就會變得麻煩。雖然可以將對屬性的訪問寫成一個方法來實現,但 PHP 提供了一些特殊方法來方便此類操作。

__set() 

__set() 方法用于設置私有屬性值:

function __set($property_name, $value)
{ 
    $this->$property_name = $value; 
}

在類里面使用了 __set() 方法后,當使用 $p1->name = "張三"; 這樣的方式去設置對象私有屬性的值時,就會自動調用 __set() 方法來設置私有屬性的值。

__get() 

__get() 方法用于獲取私有屬性值:

function __set($property_name, $value)
{ 
    return isset($this->$property_name) ? $this->$property_name : null;
}

例子:

<?php
class Person {
    private $name;
    private $sex;
    private $age;

    //__set()方法用來設置私有屬性
    function __set($property_name, $value) { 
        echo "在直接設置私有屬性值的時候,自動調用了這個 __set() 方法為私有屬性賦值<br />";
        $this->$property_name = $value; 
    }
    //__get()方法用來獲取私有屬性
    function __get($property_name) {  
        echo "在直接獲取私有屬性值的時候,自動調用了這個 __get() 方法<br />";
        return isset($this->$property_name) ? $this->$property_name : null;
    }
}

$p1=new Person();
//直接為私有屬性賦值的操作, 會自動調用 __set() 方法進行賦值
$p1->name = "張三";
//直接獲取私有屬性的值, 會自動調用 __get() 方法,返回成員屬性的值
echo "我的名字叫:".$p1->name;	
?>

運行該例子,輸出:

在直接設置私有屬性值的時候,自動調用了這個 __set() 方法為私有屬性賦值 

在直接獲取私有屬性值的時候,自動調用了這個 __get() 方法 

我的名字叫:張三

__isset()

__isset() 方法用于檢測私有屬性值是否被設定。

如果對象里面成員是公有的,可以直接使用 isset() 函數。如果是私有的成員屬性,那就需要在類里面加上一個 __isset() 方法:

private function __isset($property_name)
{
    return isset($this->$property_name);
}

這樣當在類外部使用 isset() 函數來測定對象里面的私有成員是否被設定時,就會自動調用 __isset() 方法來檢測。

__unset()

__unset() 方法用于刪除私有屬性。

同 isset() 函數一樣,unset() 函數只能刪除對象的公有成員屬性,當要刪除對象內部的私有成員屬性時,需要使用__unset() 方法:

private function __unset($property_name)
{
    unset($this->$property_name);
}


北京时时彩pk10 公司赚钱和值钱 时时彩龙虎和出和技巧 极速十一选五 河南麻将全集免费 漂流瓶赚钱软件在哪里 玩棋牌游戏上庄能赚钱吗 陕西快乐十分开奖 技巧时时彩计划软件 澳客网比分直播手机版 999捕鱼下 小米旗下赚钱软件 11选5怎么视频现场直播 欢乐捕鱼人作弊器 中国现在什么赚钱 福彩欢乐生肖开奖结果 365天天彩票app下载 公司赚钱和值钱 时时彩龙虎和出和技巧 极速十一选五 河南麻将全集免费 漂流瓶赚钱软件在哪里 玩棋牌游戏上庄能赚钱吗 陕西快乐十分开奖 技巧时时彩计划软件 澳客网比分直播手机版 999捕鱼下 小米旗下赚钱软件 11选5怎么视频现场直播 欢乐捕鱼人作弊器 中国现在什么赚钱 福彩欢乐生肖开奖结果 365天天彩票app下载