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

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

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

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

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

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

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

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

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

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

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


        namespace container;


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

        public $instances = [];

        /**
        * 容器的對(duì)象實(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é)的案例演示都放在對(duì)應(yīng)的控制器中

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

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

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

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

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

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

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

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

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

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产亚洲精品精华液| 97在线精品视频| 99久久这里只有精品| 污污网站国产精品白丝袜| 9re热国产这里只有精品| 国内精品久久人妻互换| 亚洲精品无码永久在线观看| 国产A∨免费精品视频| 500av导航大全精品| 日韩精品国产另类专区| 亚洲精品成a人在线观看| 99精品电影一区二区免费看| 精品国产污污免费网站| 国产精品99久久99久久久| 亚洲av午夜福利精品一区| 色婷婷久久久SWAG精品| 久久精品二区| 国内精品久久久久久久涩爱| 91嫩草亚洲精品| 精品国产自在在线在线观看| 99国产欧美精品久久久蜜芽| 国产综合精品一区二区三区| 嫩草伊人久久精品少妇AV| 一本色道久久88精品综合| 亚洲国产精品日韩| 婷婷久久精品国产| 亚洲精品NV久久久久久久久久| 日韩精品欧美激情国产一区| 欧美日韩精品久久久久| 久久精品免费大片国产大片| 久99久无码精品视频免费播放| 国产一区二区精品久久凹凸| 国产精品自在欧美一区| 国产精品亚洲不卡一区二区三区| 国产精品videossex白浆| 国产精品五月天强力打造| 国产欧美精品一区二区三区四区| 精品国产午夜肉伦伦影院| 欧美精品区一级片免费播放| 亚洲国产精品嫩草影院久久| 野狼精品社区|