php中單例模式-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了php中單例模式,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶大家一起來研究并學(xué)習(xí)一下“php中單例模式”這篇文章吧。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供將樂網(wǎng)站建設(shè)、將樂做網(wǎng)站、將樂網(wǎng)站設(shè)計(jì)、將樂網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、將樂企業(yè)網(wǎng)站模板建站服務(wù),10多年將樂做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

php有什么用

php是一個(gè)嵌套的縮寫名稱,是英文超級文本預(yù)處理語言,它的語法混合了C、Java、Perl以及php自創(chuàng)新的語法,主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用php開發(fā),因?yàn)閜hp是開源的,從而使得php經(jīng)久不衰。

1.單例模式的由來

是對現(xiàn)實(shí)生活中一類具有共同特征的事物的抽象,通過類的實(shí)例化,產(chǎn)生了許多的對象,但同時(shí)也產(chǎn)生了大量資源的消耗(例如在連接數(shù)據(jù)庫時(shí)連接數(shù)量的限制,又例如在計(jì)算機(jī)中打開資源管理器卻具有性),由此也產(chǎn)生了對類的實(shí)例化進(jìn)行了限定的需求,為了保護(hù)資源的性,由此產(chǎn)生了單例模式。

2.單例模式的定義

定義:單例模式singleton,是一種類的設(shè)計(jì)只會(huì)最多產(chǎn)生一個(gè)對象的設(shè)計(jì)思想。

3.單例模式的實(shí)例

  a.創(chuàng)建一個(gè)空類 。

<?php
   class Use{
   }
   $a=new Use();//實(shí)例化一個(gè)對象
?>

b.能夠多次實(shí)例化類,是產(chǎn)生多個(gè)對象的原因,所以可以通過私有化構(gòu)造方法。

<?php
  class Use{
    private function __construct()
    {
      echo __FUNCTION__."<br>";
    }
   }
?>

c.私有化構(gòu)造方法使得實(shí)例化對象產(chǎn)生的數(shù)目為0,由此可以通過在類的內(nèi)部,通過靜態(tài)方法調(diào)用構(gòu)造方法,然后將構(gòu)造方法返回至外部。

<?php
  class Use{
    private function __construct()
    {
     echo __FUNCTION__."<br>";
    }
    public static function getInstance()
    {
      return new self();
        }
   }
  $s1=Use::getSingleton();
?>

d.通過上述的方法雖然能夠?qū)嵗瘜ο?,但是同時(shí)也將構(gòu)造方法的使用權(quán)限外放出去。如果想要該方法只返回一個(gè)對象,就得保證類內(nèi)部有辦法存著某個(gè)產(chǎn)生的對象,第一次產(chǎn)生新的,后面返回舊的。此時(shí)需要使用靜態(tài)屬性。

<?php
  class Use{
    private static $object = NULL;//初始化為NULL,沒有對象 
    
    private function __construct()
    {
      echo __FUNCTION__."<br>";
    }
    
    public static function getInstance()
    {  
      //判斷類內(nèi)部的靜態(tài)屬性是否存在對象
       if(!(self::$object instanceof self)){   //當(dāng)前保存的內(nèi)容不是當(dāng)前類的對象
       self::$object = new self();
    }
      //返回對象給外部
       return self::$object;
    }
   }
  $s1=Use::getSingleton();
?>

e.此時(shí)可以保證,通過調(diào)用靜態(tài)方法只得到一個(gè)對象。但是依舊可以通過克隆,不停的實(shí)例化新的對象,所以可以將克隆私有化。

<?php
  class Use{
    private static $object = NULL;//初始化為NULL,沒有對象 
    
    private function __construct()
    {
      echo __FUNCTION__."<br>";
    }
    
    public static function getInstance()
    {  
      //判斷類內(nèi)部的靜態(tài)屬性是否存在對象
       if(!(self::$object instanceof self)){   //當(dāng)前保存的內(nèi)容不是當(dāng)前類的對象
           self::$object = new self();
       }
      //返回對象給外部
       return self::$object;
    }
    
    
    private function __clone(){}   
   }
  $s1=Use::getSingleton();
?>

以上就是關(guān)于“php中單例模式”的內(nèi)容,如果改文章對你有所幫助并覺得寫得不錯(cuò),勞請分享給你的好友一起學(xué)習(xí)新知識(shí),若想了解更多相關(guān)知識(shí)內(nèi)容,請多多關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

名稱欄目:php中單例模式-創(chuàng)新互聯(lián)
本文鏈接:http://muchs.cn/article28/deodcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、企業(yè)網(wǎng)站制作App開發(fā)、搜索引擎優(yōu)化做網(wǎng)站

廣告

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

網(wǎng)站托管運(yùn)營