一级毛片视频在线观看-一级毛片视频免费-一级毛片视频播放-一级毛片看真人在线视频-国产高清在线精品一区a-国产高清在线精品一区二区

淺談 thinkphp composer 擴展包加載原理 環球視訊

時間:2023-06-14 22:21:52
淺談 thinkphp composer 擴展包加載原理本文將介紹 ThinkPHP 中 Composer 擴展包的加載原理,幫助讀者更好地理解和應用該功能。前言

如題,今天感覺好久沒有更新博客了。最近迷上了物聯網開發。一直在研究stm32、51這些東西。想起來前幾天群里面有人問到tp擴展包原理。其實這個前幾年也就研究過。網上搜了搜發現相關文章也很少(也有可能是我搜索姿勢不對)今天就來寫一篇thinkphp composer包加載原理

概覽當進行 composer update或者 composer require操作時。則會執行service:discover這個命令。把當前所有已經加載的庫信息都進行一次匹配。如果匹配到了think關鍵字的services屬性。則把服務類輸出成配置文件到vendor/services.php文件中當一次應用初始化(通常為一次訪問開始時).則會引入vendor/services.php中的service服務類到當前應用內進行初始化源碼解析composer包加載流程文字詳解 建議先閱讀一下這篇前兩年我寫的文章 Thinkphp6源碼解析之分析 路由篇-請求流程

在第三步進入到Http->runWithRequest這個方法中后。可以看到又調用了initialize方法

追進這個方法可以看到


(資料圖片)

追進initialize方法看實現

/**     * 初始化應用     * @access public     * @return $this     */    public function initialize()    {        // 設置當前初始化狀態        $this->initialized = true;                // 設置應用開始時間        $this->beginTime = microtime(true);                // 獲取到php的內存        $this->beginMem  = memory_get_usage();        // 加載環境變量 例如當前應用目錄下的 .env文件        $this->loadEnv($this->envName);        // 設置配置文件后綴        $this->configExt = $this->env->get("config_ext", ".php");                // 調試模式設置        $this->debugModeInit();        // 加載全局初始化文件        $this->load();        // 加載應用默認語言包        $this->loadLangPack();        // 監聽AppInit        $this->event->trigger(AppInit::class);                // 設置php默認時區        date_default_timezone_set($this->config->get("app.default_timezone", "Asia/Shanghai"));        // 初始化當前系統配置的默認服務        foreach ($this->initializers as $initializer) {// 調用make函數生成對象。并且執行對象中的init方法            $this->make($initializer)->init($this);        }        return $this;    }

重點是初始化當前系統配置的默認服務這個$this->make($initializer)->init($this)函數,看看initializers屬性

/**     * 應用初始化器     * @var array     */    protected $initializers = [        Error::class,        RegisterService::class,        BootService::class,    ];

追到這里就是關鍵了。上面把這里面的類進行初始化。并且執行類中的init方法。直接看RegisterService::class類的init方法

public function init(App $app)    {        // 獲取當前項目根目錄。拼接上 vendor/services.php        $file = $app->getRootPath() . "vendor/services.php";        $services = $this->services;        if (is_file($file)) {            $services = array_merge($services, include $file);        }        // 初始化services        foreach ($services as $service) {            if (class_exists($service)) {                $app->register($service);            }        }    }

讀到這里的可以看看自己項目vendor目錄下是不是有一個services.php,接下來講一講composer.json這個文件在tp框架中的composer.json有這樣一個配置

這里這個概念我直接讓chatgpt來解讀。解讀內容如下

接下來直接看service:discover這個命令。追到vendor\topthink\framework\src\think\console\command\ServiceDiscover.php文件

public function execute(Input $input, Output $output)    {        // 獲取到當前項目根目錄下的 vendor/composer/installed.json 文件        if (is_file($path = $this->app->getRootPath() . "vendor/composer/installed.json")) {            // json解析            $packages = json_decode(@file_get_contents($path), true);            // Compatibility with Composer 2.0            if (isset($packages["packages"])) {                $packages = $packages["packages"];            }            $services = [];            foreach ($packages as $package) {                // 判斷當前包是否在extra字段里面聲明了think關鍵字中的services屬性。如果聲明了就把services給裝載到services變量內                if (!empty($package["extra"]["think"]["services"])) {                    $services = array_merge($services, (array) $package["extra"]["think"]["services"]);                }            }            $header = "http:// This file is automatically generated at:" . date("Y-m-d H:i:s") . PHP_EOL . "declare (strict_types = 1);" . PHP_EOL;            // 用var_export函數把services變量打印成可讀性代碼。并且寫入到根目錄vendor目錄下的services            $content = "app->getRootPath() . "vendor/services.php", $content);            $output->writeln("Succeed!");        }

一直到這就算結束了

寫在最后

如果覺得這篇文章對你有幫助。不妨點個贊留個關注再走

標簽:

來源:博客園
0
上一篇:貴陽香菇肉丁最正宗的做法?_今日熱文 下一篇:最后一頁

  Copyright @ 2001-2013 www.ixinshang.com.cn All Rights Reserved 財經新聞網 版權所有 京ICP備12018864號-1

  網站所登新聞、資訊等內容, 均為相關單位具有著作權,轉載請注明出處

  未經彩迅新聞網書面授權,請勿建立鏡像 聯系我們:  291 32 36@qq.com

營業執照公示信息

 

黄色福利片| 麻豆污视频| 日韩专区第一页| 国产麻豆精品免费视频| 欧美另类videosbestsex| 黄视频网站在线免费观看| 99热视热频这里只有精品| 欧美国产日韩在线| 精品视频免费在线| 亚洲第一视频在线播放| 午夜久久网| 日韩男人天堂| 999精品视频在线| 999久久66久6只有精品| 黄色免费三级| 日韩免费片| 亚欧乱色一区二区三区| 成人免费观看的视频黄页| 欧美国产日韩久久久| 欧美a级片视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产一区二区精品| 日本特黄特黄aaaaa大片| 精品视频一区二区三区免费| 久久精品免视看国产明星| 成人高清视频在线观看| 麻豆污视频| 999久久66久6只有精品| 欧美激情伊人| 欧美激情伊人| 高清一级淫片a级中文字幕 | 欧美a级片视频| 国产极品白嫩美女在线观看看| 成人在激情在线视频| 青青久久精品国产免费看| 黄色福利片| 久久99中文字幕| 日日爽天天| 亚洲精品中文字幕久久久久久| 欧美大片一区| 四虎久久影院| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产亚洲精品成人a在线| 午夜欧美福利| 99色视频| 日日爽天天| 国产网站免费在线观看| 国产成人精品综合久久久| 日韩中文字幕一区二区不卡| 国产伦精品一区二区三区无广告| 91麻豆精品国产自产在线观看一区 | 国产精品1024在线永久免费 | 韩国三级一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 亚欧成人乱码一区二区| 亚洲不卡一区二区三区在线| 成人免费福利片在线观看| 国产91视频网| 久久国产一久久高清| 日日夜夜婷婷| 日韩字幕在线| 日韩av东京社区男人的天堂| 欧美国产日韩在线| 国产精品免费久久| 国产不卡福利| 黄色免费三级| 亚洲女人国产香蕉久久精品| 黄视频网站在线观看| 99热视热频这里只有精品| 国产福利免费观看| 久久精品道一区二区三区| 亚洲天堂免费| 精品国产一区二区三区免费| 国产一区二区精品久久| 免费一级片网站| 亚洲精品影院| 国产视频在线免费观看| 可以免费看污视频的网站| 高清一级淫片a级中文字幕 | 毛片高清| 国产不卡在线观看| 国产视频一区在线| 九九干| 亚州视频一区二区| 亚洲精品中文一区不卡| 国产一区精品| 久久久久久久免费视频| 日韩在线观看网站| 色综合久久手机在线| 精品视频免费观看| 亚欧成人乱码一区二区| 国产麻豆精品免费密入口| 香蕉视频久久| 天天做人人爱夜夜爽2020毛片| 国产一区免费观看| 台湾美女古装一级毛片| 国产福利免费视频| 欧美a免费| 免费一级片在线观看| 天天做人人爱夜夜爽2020| a级精品九九九大片免费看| 日本乱中文字幕系列| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 欧美a级大片| 日韩在线观看视频网站| 欧美激情在线精品video| 亚久久伊人精品青青草原2020| 香蕉视频三级| 国产91素人搭讪系列天堂| 91麻豆tv| 日本免费看视频| 九九免费精品视频| 国产高清在线精品一区a| 欧美一级视频高清片| 毛片成人永久免费视频| 精品久久久久久免费影院| 精品视频免费看| 欧美爱色| 韩国三级视频网站| 欧美一级视频免费观看| 日韩专区在线播放| 国产一区二区福利久久| 日本特黄特色aa大片免费| 精品视频一区二区三区免费| 四虎影视久久| 日本在线播放一区| 香蕉视频一级| 九九精品在线播放| 欧美激情影院| 精品国产一区二区三区久| 亚洲天堂免费| 精品视频在线观看一区二区| 欧美a免费| 成人影院一区二区三区| 日韩免费在线观看视频| 香蕉视频久久| 成人高清视频免费观看| 国产国语对白一级毛片| 日韩一级黄色片| 国产伦精品一区三区视频| 国产视频一区二区三区四区 | 黄色福利片| 国产成人欧美一区二区三区的| 国产一级生活片| 国产原创中文字幕| 精品在线视频播放| 精品国产三级a| 日韩在线观看免费| 国产激情视频在线观看| 99色视频| 国产91视频网| 尤物视频网站在线观看| 亚洲爆爽| 久久精品欧美一区二区| 国产a视频| 日本特黄一级| 精品视频一区二区三区免费| 国产网站麻豆精品视频| 国产精品自拍亚洲| 免费一级生活片| 日本伦理片网站| 国产国语在线播放视频| 国产国语对白一级毛片| 国产亚洲免费观看| 久久国产一久久高清| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 99久久精品国产麻豆| 国产精品自拍在线观看| 色综合久久手机在线| 国产精品123| 成人高清视频免费观看| 精品久久久久久免费影院| 久久成人综合网| a级黄色毛片免费播放视频| 午夜在线观看视频免费 成人| 成人免费观看网欧美片| 久久久成人网| 九九九网站| 91麻豆爱豆果冻天美星空| 国产亚洲精品aaa大片| 日韩专区一区| 国产亚洲男人的天堂在线观看| 黄色短视频网站| 国产网站麻豆精品视频| 黄色免费三级| 国产91精品系列在线观看| 国产精品1024永久免费视频| 成人a大片高清在线观看| 欧美国产日韩久久久| 亚洲 激情| 日韩中文字幕在线播放| 你懂的在线观看视频| 日本伦理片网站| 成人免费高清视频| 韩国妈妈的朋友在线播放| 亚洲精品久久玖玖玖玖| 日本伦理片网站| 欧美a免费| 日日日夜夜操| 日本在线不卡视频|