内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

php怎樣實現(xiàn)單例模式

php實現(xiàn)單例模式的方法:首先創(chuàng)建靜態(tài)私有的變量保存該類對象;然后防止使用new直接創(chuàng)建對象;接著防止使用clone克隆對象;最后判斷【$instance】是否是Singleton的對象,不是則創(chuàng)建即可。

十載的甌海網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整甌海建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“甌海網(wǎng)站設計”,“甌海網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

php實現(xiàn)單例模式的方法:

單例模式的定義:保證一個類只有一個實例,并提供一個訪問它的全局訪問點。

PHP實現(xiàn)單例模式:

class Singleton
{
    //創(chuàng)建靜態(tài)私有的變量保存該類對象
    static private $instance;
    //防止使用new直接創(chuàng)建對象
    private function __construct(){}
    //防止使用clone克隆對象
    private function __clone(){}
    static public function getInstance()
    {
        //判斷$instance是否是Singleton的對象,不是則創(chuàng)建
        if (!self::$instance instanceof self) {
            self::$instance = new self();
        }
        return self::$instance;
    }
    public function test()
    {
        echo "我是一個單例模式";
    }
}
$sing = Singleton::getInstance();
$sing->test();
$sing2 = new Singleton(); //Fatal error: Uncaught Error: Call to private Singleton::__construct() from invalid context in
$sing3 = clone $sing; //Fatal error: Uncaught Error: Call to private Singleton::__clone() from context

PHP實現(xiàn)單例模式有什么意義:

沒有意義,PHP沒有線程概念,沒有異步代碼,不會常駐內存,所有的修改自己都可以控制,不需要保證類只有一個實例,有什么意義?你要在數(shù)據(jù)庫連接類中使用單例模式,萬一有的頁面需要連接兩個數(shù)據(jù)庫怎么辦?

真的沒有意義嗎?

當然不是。

看下代碼:

class A
{
    public function show()
    {
        echo "我是A類函數(shù),要調用B類函數(shù)和C類函數(shù)<br/>";
        $b = new B();
        $b->show();
        $c = new C();
        $c->show('A');
    }
}
class B
{
    public function show()
    {
        echo "我是B類函數(shù),要調用C類函數(shù)<br/>";
        $c = new C();
        $c->show('B');
    }
}
class C
{
    public function show($parm)
    {
        echo "我是C類函數(shù),現(xiàn)在被{$parm}類函數(shù)調用<br/>";
    }
}
$a = new A();
$a->show();

這里調用的過程中,創(chuàng)建了兩個C類對象,我們知道,new是很耗資源的一種操作,如果這里C類是單例模式,只new一次就行了,這個想法是可以的,但我們一般用另外一種方法來做:

class A
{
    public function show()
    {
        echo "我是A類函數(shù),要調用B類函數(shù)和C類函數(shù)<br/>";
        $b = Unit::getInstance('B');
        $b->show();
        $c = Unit::getInstance('C');
        $c->show('A');
    }
}
class B
{
    public function show()
    {
        echo "我是B類函數(shù),要調用C類函數(shù)<br/>";
        $c = Unit::getInstance('C');
        $c->show('B');
    }
}
class C
{
    public function __construct()
    {
        echo "C類對象被創(chuàng)建<br/>";
    }
    public function show($parm)
    {
        echo "我是C類函數(shù),現(xiàn)在被{$parm}類函數(shù)調用<br/>";
    }
}
class Unit
{
    static public function getInstance($class)
    {
        static $arr = null;
        if (!isset($arr[$class]) || !$arr[$class] instanceof $class) {
            $arr[$class] = new $class();
        }
        return $arr[$class];
    }
}
$a = new A();
$a->show();

執(zhí)行代碼可以看到,C類只被實例化了一次,再實際操作中,我們一般使用靜態(tài)變量保存對象,變相實現(xiàn)單例模式。

單例模式和使用靜態(tài)變量實現(xiàn)單例的區(qū)別:

單例模式強制類只能創(chuàng)建一個對象,一般是安全或者統(tǒng)一界面展示的時候會用到,而靜態(tài)變量實現(xiàn)單例主要是為了減少new操作,并不能阻止new和clone操作。

相關學習推薦:php編程(視頻)

分享名稱:php怎樣實現(xiàn)單例模式
地址分享:http://www.rwnh.cn/article28/cpijcp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿建站、域名注冊、網(wǎng)站建設網(wǎng)站內鏈、用戶體驗、Google

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
盐亭县| 西和县| 紫金县| 九江市| 宝山区| 道孚县| 彰化县| 香格里拉县| 锡林郭勒盟| 罗甸县| 海原县| 元谋县| 库伦旗| 罗山县| 泌阳县| 志丹县| 左云县| 凌海市| 贡觉县| 萨迦县| 江山市| 湘潭市| 汤原县| 湛江市| 盐池县| 富阳市| 铁岭市| 阳高县| 深圳市| 东乌| 壶关县| 扎鲁特旗| 商丘市| 房产| 汝阳县| 密山市| 永安市| 嵊泗县| 青川县| 红河县| 兰州市|