亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

大話PHP設計模式

Rango PHP開發工程師
難度中級
時長 3小時30分
學習人數
綜合評分9.57
140人評價 查看評價
9.7 內容實用
9.4 簡潔易懂
9.6 邏輯清晰
  • 適配器模式,例子 數據庫連接,定義一個接口,mysql,mysqli都繼承接口,實現同樣的方法,調用時實例化不同的類即可

    查看全部
  • 工廠模式

    用工廠方法或者類來實例化對象,而不是直接new。
    首先我們需要創建一個工廠類,比如Factory.php。如果不使用工廠模式的,我們需要一個對象的時候通常需要
    new Inexistence\girlfriend();
    然而我們一般不只在一個地方需要這個對象,這個時候一旦對象發生變更,或者對象的某些屬性發生變化,我們就需要一個一個的來改,非常麻煩。這個時候我們引入工廠類,在Factory.php

    http://img1.sycdn.imooc.com//5de3d7130001311806060442.jpg


    然后每次調用時$GF1 = Imagination\Factory::getGirlfriend()就可以避免四處修改的問題。
    在Laravel中這樣的設計模式很常見。

    http://img1.sycdn.imooc.com//5de3d7640001044f12240626.jpg


    單例模式

    即確保某個類的對象僅被創建一次。比如我們在database里面存了很多女生的聯系方式,如果我們用pdo的話每次查找都會new一個對象,勢必會造成資源的浪費。所以我們就在connect之前做個判斷。

    http://img1.sycdn.imooc.com//5de3d7980001029d05801164.jpg


    這里面比較關鍵的地方在于聲明了一個私有變量和私有的構造方法,然后再在這個類里面new自己,就避免了在其他地方重復實例化的問題。這個時候我們已經沒法直接new Database了,我們只能通過調用get Instance方法來建立連接。這里順帶講一下PHP的鏈式操作的實現。在很多框架比如用完26個字母就不知道怎么辦的thinkPHP和Laravel中對數據庫的操作可以使用鏈式操作,這樣可以使代碼更為優雅。具體實現就是使用return this;,這樣就可以用where($where)->order($order)->limit(1);來代替多行語句。
    Laravel使用了三目運算符來代替if,顯得更為優雅。


    注冊模式

    解決全局共享和交換對象的問題。實際上就是把實例好的對象放進一個數組,在任何地方要用的時候就去出來。就好比有一課樹,我們把new好的$GF1,$GF2。。。一個一個掛上去,要用的時候再取出來。

    http://img1.sycdn.imooc.com//5de3d7bf00017e8b07740886.jpg


    unset在PHP中是關鍵字,所以用_unset代替。這樣的話我們就要在工廠類中用一下Register::set()方法,把new好的對象掛樹上。為了調用方便,Register中還需要一個get()方法來取對象。

    http://img1.sycdn.imooc.com//5de3d7d40001d38d06420322.jpg


    這樣我們也就不用再去使用單例模式了,直接從注冊器中取Register::get()。
    Laravel中用了更優雅的方式。

    http://img1.sycdn.imooc.com//5de3d7ec0001292b09560760.jpg



    查看全部
  • //Spl棧?先進后出
    $stack?=?new?SplStack();
    $stack->push("data1?\r\n");
    $stack->push("data2?\r\n");
    echo?$stack->pop();
    echo?$stack->pop();
    
    //Spl?隊列?先進先出
    $queue?=?new?SplQueue();
    $queue->enqueue("queue-data1?\r\n");
    $queue->enqueue("queue-data2?\r\n");
    
    
    echo?$queue->dequeue();
    echo?$queue->dequeue();
    
    //Spl?堆
    $heap?=?new?SplMinHeap();//最小堆
    $heap->insert("heap-data1?\r\n");
    $heap->insert("heap-data2?\r\n");
    
    echo?$heap->extract();
    echo?$heap->extract();


    查看全部
    0 采集 收起 來源:SPL標準庫簡介

    2019-11-29

  • 1.工廠模式,工廠方法或者類生成對象,而不是在代碼中直接new;

    2.單例模式,使某個類的對象僅僅允許創建一個;

    3.注冊模式,全局共享和交換對象;


    查看全部
  • PSR-0規范

    1.命名空間必須與絕對路徑一致;

    2.類名首字母必須大寫;

    3.除入口文件外,其他".php"必須只有一個類;


    查看全部

舉報

0/150
提交
取消
課程須知
要想更好的掌握本課課程的重點內容,那么熟知面向對象的相關知識是必不可少的。
老師告訴你能學到什么?
1、了解PHP的11種設計模式 2、掌握設計模式的編程實現 3、具備使用設計模式進行面向對象編程的能力

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!