亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例

    本文將使用倆種設(shè)計(jì)模式和反射知識實(shí)現(xiàn)一個(gè)簡單的案例,把之前學(xué)習(xí)過的知識點(diǎn)進(jìn)行簡單的融合串聯(lián)起來。

    五、融合設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)案例

    經(jīng)歷了九九八十一難終于來到了容器這一環(huán)節(jié),在這一環(huán)節(jié)我們先來實(shí)現(xiàn)一個(gè)自己的容器,將之前講解的單例模式、注冊樹模式、反射進(jìn)行一個(gè)串聯(lián),從而進(jìn)行加深印象和更好的理解。

    還記得之前在依賴注入里邊說過這樣一個(gè)方法dependency,這個(gè)方法就是進(jìn)行了依賴注入,從而對代碼進(jìn)行解耦。

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例但是這次呢!會使用容器來解決這一問題。

    首先先把需要的類定義好,這一個(gè)類就使用了單例模式和注冊樹模式,之前的文章沒有好好看的,一定要仔細(xì)看一下,否則后文會很難理解的。

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例
    在這里插入圖片描述

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例

    <?php
    /**
    * Created by PhpStorm.
    * User: 咔咔
    * Date: 2020/9/21
    * Time: 19:04
    */


    namespace container;


    class Container
    {
    /**
    * 存放容器
    * @var array
    */

    public $instances = [];

    /**
    * 容器的對象實(shí)例
    * @var array
    */

    protected static $instance;

    /**
    * 定義一個(gè)私有的構(gòu)造函數(shù)防止外部類實(shí)例化
    * Container constructor.
    */

    private function __construct() {

    }

    /**
    * 獲取當(dāng)前容器的實(shí)例(單例模式)
    * @return array|Container
    */

    public static function getInstance ()
    {
    if(is_null(self::$instance)){
    self::$instance = new self();
    }

    return self::$instance;
    }

    public function set ($key,$value)
    {
    return $this->instances[$key] = $value;
    }

    public function get ($key)
    {
    return $this->instances[$key];
    }
    }

    為了方便以后查看方便,這里把每節(jié)的案例演示都放在對應(yīng)的控制器中

    這里把之前的依賴注入的代碼移植過來,并且配置上注解路由進(jìn)行訪問,看最終結(jié)果是否為Car方法返回的123

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例測試一下打印結(jié)果,一切ok

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例使用單例模式和注冊樹模式配合后修改的這份代碼

    修改后打印出其結(jié)果,同樣也是car返回的值123。

    在這里需要注意一下就是在同一個(gè)方法中set和get方法是不會共存的,這里只是為了給大家做一個(gè)演示寫到一起的。

    后邊在看容器源碼時(shí)就知道set和get方法到底是怎么使用的,這里只是讓大家體驗(yàn)一下單例模式和注冊樹模式。

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例這里做一個(gè)小修改,修改上文中最后倆行代碼

    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例
    在這里插入圖片描述
    ThinkPHP容器之使用設(shè)計(jì)模式和反射實(shí)現(xiàn)一個(gè)簡單的案例
    在這里插入圖片描述

    堅(jiān)持學(xué)習(xí)、堅(jiān)持寫博、堅(jiān)持分享是咔咔從業(yè)以來一直所秉持的信念。希望在偌大互聯(lián)網(wǎng)中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號