站長資訊網
        最全最豐富的資訊網站

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例

        本文將使用倆種設計模式和反射知識實現一個簡單的案例,把之前學習過的知識點進行簡單的融合串聯起來。

        五、融合設計模式和反射實現一個案例

        經歷了九九八十一難終于來到了容器這一環節,在這一環節我們先來實現一個自己的容器,將之前講解的單例模式、注冊樹模式、反射進行一個串聯,從而進行加深印象和更好的理解。

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

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例但是這次呢!會使用容器來解決這一問題。

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

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例
        在這里插入圖片描述

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例ThinkPHP容器之使用設計模式和反射實現一個簡單的案例

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


        namespace container;


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

        public $instances = [];

        /**
        * 容器的對象實例
        * @var array
        */

        protected static $instance;

        /**
        * 定義一個私有的構造函數防止外部類實例化
        * Container constructor.
        */

        private function __construct() {

        }

        /**
        * 獲取當前容器的實例(單例模式)
        * @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];
        }
        }

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

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

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例測試一下打印結果,一切ok

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例使用單例模式和注冊樹模式配合后修改的這份代碼

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

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

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

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例這里做一個小修改,修改上文中最后倆行代碼

        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例
        在這里插入圖片描述
        ThinkPHP容器之使用設計模式和反射實現一個簡單的案例
        在這里插入圖片描述

        堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久ww精品w免费人成| 久久se精品一区精品二区| 国产精品丝袜一区二区三区| 国产精品一区在线观看你懂的| 国产精品国色综合久久| 亚洲综合精品香蕉久久网| 精品97国产免费人成视频| 欧美亚洲国产成人精品| 久久夜色精品国产网站| 亚洲午夜精品久久久久久app | 国自产精品手机在线观看视频| 国产精品久久久久久影院| 日韩精品久久久久久久电影蜜臀| 久久精品成人免费国产片小草| 91大神精品全国在线观看| 国产精品麻豆高清在线观看 | 国产精品水嫩水嫩| 精品亚洲A∨无码一区二区三区| 伊人久久精品无码二区麻豆| 天天爽夜夜爽夜夜爽精品视频| 精品无码一级毛片免费视频观看| 亚洲精品免费观看| 国产夫妇精品自在线| 成人区精品一区二区不卡 | 亚洲精品国产字幕久久不卡| 免费精品精品国产欧美在线| 精品欧美激情在线看| 精品人妻伦九区久久AAA片69| 国精品无码A区一区二区| 国产精品 羞羞答答在线| 91麻豆精品视频在线观看| 国产精品人人爽人人做我的可爱 | 国产精品亚洲综合专区片高清久久久 | 国产精品丝袜黑色高跟鞋| 久久久久亚洲精品无码蜜桃| 午夜DY888国产精品影院| 日韩一区精品视频一区二区| 久久99精品久久久久久hb无码| 精品亚洲aⅴ在线观看| 91久久精品91久久性色| 久久精品一区二区|