天天看點

PHPSingleton模式的例子

在這篇文章中PHPSingleton模式的解釋不一定好!僅舉它的一個例子。其目的是為了讓自己通過一個例子來加深對Singleton模式的了解!這裡,以供參考!

單例:能夠簡單的了解是通過一個類,僅僅能執行個體化單個對象,不能執行個體化多個對象!

class e {

    public $uname;

    static $obj = NULL;      //定義一個靜态屬性

    private function __construct() {    //在構造方法前使用private屬性,目的是不能在類的外部執行個體化對象。

                                                              //即不能$a=new e();

    }                                                        //假設要使用newkeyword來執行個體化對象就會調用該構造函數,

                                                             //而該函數已經被修飾為private,此時使用newkeyword執行個體化對象時會報錯。

    static function getObj() {

        if (is_null(self::$obj)) {

            self::$obj = new e();        //在類的内部執行個體化對象賦給靜态屬性;在第一次執行個體化對象時。

        }                                              //$obj會被指派,以後再執行個體化對象時,

        return self::$obj;                  //由于有這裡的推斷是以不會反複執行個體對象僅僅會執行個體化一次對象;

    }                                                  //多次執行個體化對象時。僅僅是把對象的引用指派給了變量,不會再次執行個體化對象

}

$d = e::getObj();

$d->uname = 100;

echo $d->uname;        //100

$e = e::getObj();

$e->uname = 200;

echo $d->uname;        //會輸出200。$d對象的uname值也被該表了,由于$e和$d指向同一個對象

echo $e->uname;        //輸出200

版權聲明:本文部落客原創文章。部落格,未經同意不得轉載。

本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/4868919.html,如需轉載請自行聯系原作者

繼續閱讀