第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

大話PHP設(shè)計模式

Rango PHP開發(fā)工程師
難度中級
時長 3小時30分
學(xué)習(xí)人數(shù)
綜合評分9.57
140人評價 查看評價
9.7 內(nèi)容實用
9.4 簡潔易懂
9.6 邏輯清晰
  • 單例模式:避免重復(fù)多次實例化一個對象,造成資源浪費

    Factory.php

    <?php

    namespace IMooc;

    class Factory{


    static function DataBase(){

    $db = Database::getInstance();

    return $db;

    }

    }

    Database.php

    <?php

    namespace IMooc;

    class Database{

    private static $db;

    //禁止通過外部實例化該類

    private function __construct(){


    }

    //禁止通過外部客戶該類

    private function __clone(){

    }

    //靜態(tài)方法中只能調(diào)用靜態(tài)屬性或者靜態(tài)方法,非靜態(tài)方法可以調(diào)用靜態(tài)屬性或者靜態(tài)方法

    static function getInstance(){

    //instanceof?判斷一個對象是否是某個類的實例 或是某個類的子類

    ???? if(self::$db instanceof self){

    ???? ????return self::$db;

    ???? }else{

    ???????? self::$db = new self();

    ???????? return self::$db;

    ???? }


    }

    }

    index.php

    <?php

    define("BASEDIR",__DIR__);

    require BASEDIR."/IMooc/Loader.php";

    // 使用命名空間加載Loader類? 當(dāng)實例化的類不存在此文件中,都會調(diào)用spl_autoload_register方法,默認作用同__autoload方法相似? 都會對使用到的類進行加載

    spl_autoload_register可對使用的類進行重復(fù)加載 __autoload不會

    \\IMooc\\Loader::autoload 命名空間下的某個類方法,該方法用來加載當(dāng)前文件中不存在的類

    spl_autoload_register("\\IMooc\\Loader::autoload");

    $dbObject = IMooc\Factory::DataBase();

    var_dump($dbObject);

    Loader.php

    <?php

    namespace IMooc;

    class Loader{

    static function autoload($class){

    require BASEDIR."/".str_replace("\\","/",$class).".php";

    }

    }


    查看全部
    0 采集 收起 來源:[php]單例模式

    2018-05-03

  • 當(dāng)開發(fā)中需要訪問數(shù)據(jù)庫或者接口的時候,將所有的類都通過工廠模式生成一下,避免修改業(yè)務(wù)邏輯代碼

    查看全部
    1 采集 收起 來源:[php]工廠模式

    2018-05-02

  • php三種設(shè)計模式

    查看全部
  • ## MVC

    模型-視圖-控制器 ,一種C/S或者B/S軟件工程的組織方式。

    ? ? - 模型(Model):數(shù)據(jù)和存儲的封裝

    ? ? - 視圖(View):展現(xiàn)層的封裝,如Web系統(tǒng)中的模板文件

    ????- 控制器(Controller):邏輯層的封裝

    查看全部
  • ????public?static?function?getDatabase(?$id?=?'master'?)
    ????{
    ????????$key?=?'database_'.$id;
    ????????if(?$id?==?'master'?){
    ????????????$db_config?=?Application::getInstance()->config['database']['master'];
    ????????}?else?{
    ????????????$db_configs??=?Application::getInstance()->config['database']['slave'];
    ????????????$db_config?=?$db_configs[array_rand($db_configs)];
    ????????}
    ????????$db?=?Register::get($key);
    ????????if(?!$db?){
    ????????????//使用use導(dǎo)入MySqli
    ????????????$db?=?new?MySqli();
    ????????????$db->connect($db_config);
    ????????????Register::set($key,?$db);
    ????????}
    ????????return?$db;
    ????}


    查看全部
  • #### 簡單實例

    我們讓所有客戶端訂閱我們的服務(wù)端,那么當(dāng)我們的服務(wù)端有更新信息的時候,就通知客戶端去更新。這里的服務(wù)端就是被觀察者,客戶端就是觀察者。

    查看全部
  • ## 策略模式

    #### 定義

    將一組特定的行為和算法封裝成類,以適應(yīng)特定的上下文環(huán)境,這種模式就是策略模式


    #### 實際應(yīng)用舉例


    假如一個電商網(wǎng)站系統(tǒng),針對男性女性用戶要各自跳轉(zhuǎn)到不同的商品類目,并且所有廣告位展示不同的廣告。


    假設(shè)需要增加一個推薦位,之后再要求增加一個vip策略


    傳統(tǒng)模式:


    ```php


    class Page{


    public $strategy;? //策略類型


    public function index()

    {

    $femaleClass = new Core\FemaleUserStrategy();

    $maleClass = new Core\maleUserStrategy();

    $vipClass = new Core\vipUserStrategy();

    echo 'AD'.'<br/>';

    $sex = isset($_GET['sex']) ? trim($_GET['sex']) : '';

    if( $sex =='female' ){

    $femaleClass->showAD();

    } else if( $sex == 'vip' ){

    $vipClass->showAD();

    } else {

    $maleClass->showAD();

    }


    echo '<br/>';

    echo 'Cateogry'.'<br/>';

    if( $sex =='female' ){

    $femaleClass->showCategory();

    } else if( $sex == 'vip' ){

    $vipClass->showCategory();

    } else {

    $maleClass->showCategory();

    }


    echo 'posid'.'<br/>';

    if( $sex =='female' ){

    $femaleClass->showPosid();

    } else if( $sex == 'vip' ){

    $vipClass->showPosid();

    } else {

    $maleClass->showPosid();

    }



    }



    }



    $data = new Page();

    $sex = isset($_GET['sex']) ? trim($_GET['sex']) : '';

    $data->index();

    ```


    如果使用策略模式的話


    ```php

    class Page{


    public $strategy;? //策略類型


    public function index()

    {

    echo 'AD'.'<br/>';

    $this->strategy->showAD();

    echo '<br/>';


    echo 'Cateogry'.'<br/>';

    $this->strategy->showCategory();

    echo '<br/>';


    echo 'posid'.'<br/>';

    $this->strategy->showPosid();

    }


    public function setStrategy($strategy)

    {

    $this->strategy = $strategy;

    }


    }



    $data = new Page();

    $sex = isset($_GET['sex']) ? trim($_GET['sex']) : '';

    if( $sex =='female' ){

    $strategy = new Core\FemaleUserStrategy();

    } elseif( $sex == 'vip' ){

    $strategy = new Core\vipUserStrategy();

    } else {

    $strategy = new Core\MaleUserStrategy();

    }

    $data->setStrategy($strategy);

    $data->index();

    ```


    #### 使用策略模式可以實現(xiàn)Ioc,依賴導(dǎo)致、控制反轉(zhuǎn)


    在寫Page類的時候,并不需要去定義好所依賴的類,里面沒有它的代碼,最終在代碼執(zhí)行過程中,才將關(guān)系進行綁定,這種設(shè)計模式在我們面向?qū)ο蟮脑O(shè)計之中經(jīng)常要用到這個,因為面向?qū)ο蠛苤匾囊粋€思路就是**解耦**。


    如果兩個類是互相依賴的關(guān)系,那么它們之間的關(guān)系就是**緊耦合**設(shè)計,使用策略模式進行一個依賴倒置之后,我們就可以很方便去替換其中一個類。


    查看全部
  • # 單例模式

    傳統(tǒng)模式:某個類new之后都是一個新的對象。

    如Database new 3遍之后:

    $db1?=?new?\Core\Database();
    $db2?=?new?\Core\Database();
    $db3?=?new?\Core\Database();
    var_dump($db1);
    var_dump($db2);
    var_dump($db3);

    output:

    object(Core\Database)#1?(0)?{}
    object(Core\Database)#2?(0)?{}
    object(Core\Database)#3?(0)?{}

    后面#的數(shù)字表示不同對象?

    單例模式:只創(chuàng)建一個對象,之后再需要使用的話使用同一個對象。(不允許new,然后使用一個新的方法來使用前一個對象)

    $db1?=?\Core\Database::getInstance();
    $db2?=?\Core\Database::getInstance();
    $db3?=?\Core\Database::getInstance();
    var_dump($db1);
    var_dump($db2);
    var_dump($db3);

    output:

    object(Core\Database)#1?(0)?{}
    object(Core\Database)#1?(0)?{}
    object(Core\Database)#1?(0)?{}


    查看全部
    0 采集 收起 來源:[php]單例模式

    2018-04-27

  • # 類自動加載

    - __autoload:一個項目依賴多個框架,會包函數(shù)重新聲明錯誤。

    - spl_autoload_register:php5.3之后針對__autoload的缺陷出來的函數(shù)。

    查看全部
    0 采集 收起 來源:類自動載入

    2018-04-27


  • ## 工廠模式

    傳統(tǒng)模式:每個類都需要去new一下,當(dāng)類名和參數(shù)改變時就需要每個地方進行修改。

    工廠模式:當(dāng)類名和參數(shù)改變時只需要去工廠類里面改變。


    查看全部
    0 采集 收起 來源:[php]工廠模式

    2018-04-27

  • # 3種基本設(shè)計模式:

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

    - 單例模式:使某個類的對象允許創(chuàng)建一個

    - 注冊模式:全局共享和交換對象

    查看全部
  • github有:

    https://github.com/adobe-fonts/source-code-pro


    查看全部
  • 策略模式

    查看全部
  • 通過ruturn $this來完成鏈?zhǔn)讲僮鳌?/p>

    ```php

    $this->where()->order()->select();

    ```

    查看全部
  • phpstorm下載地址

    查看全部

舉報

0/150
提交
取消
課程須知
要想更好的掌握本課課程的重點內(nèi)容,那么熟知面向?qū)ο蟮南嚓P(guān)知識是必不可少的。
老師告訴你能學(xué)到什么?
1、了解PHP的11種設(shè)計模式 2、掌握設(shè)計模式的編程實現(xiàn) 3、具備使用設(shè)計模式進行面向?qū)ο缶幊痰哪芰?/dd>

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對慕課網(wǎng)的支持!