国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

composer類加載方式

2019-11-08 02:51:20
字體:
來源:轉載
供稿:網友

關于介紹Composer的一篇不錯的博文

Composer作為管理包依賴的工具,本身也提供了對于類加載的支持。上面的博文有了對于composer類加載的四種方式的介紹。

今天簡單看了一下其加載方式的實現。簡單介紹之前,希望大家自己先使用composer構建一次項目依賴。

使用Composer完成PRoject依賴管理(Mac)

進入項目目錄下執行composer init,之后根據提示輸入一系列東西,當然如果你很懶惰,那就一路enter吧??匆豢茨愕?code style="line-height:19.2px">composer.json文件吧,所有的配置我們都會寫在里面。javaScript{ "name": "Jian/composer", "description": "Jian test composer", "type": "project", "authors": [ { "name": "Jian", "email": "Jian@haha.com" } ], "require": { "laravel/framework": "5.2.*" }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }}

這里我們就簡單從配置中的倉庫拉取laravel的庫,指定版本5.2.*

vendor目錄下就是由composer生成的內容,同時如果在composer.json中配置了psr-0 psr-4 classmap files這些類加載方式的話,會生成一個composer目錄.

看看具體干了什么

如同上面給到的鏈接里寫到的一樣,核心處理類就是 vendor/composer/autoload_real.php這個類,它做的事情就是把psr-0,psr-4,classmap以及files四種方式加載的類注冊到vendor/composer/ClassLoader類下。

classMap->ClassLoader的classmap數組中psr-0 psr-4->namespace注冊到相應數組files中定義的文件全部放在全局變量$GLOBALS['_composerautoload_files']中

上面的類注冊后,會執行vendor/composer/ClassLoader類的register方法,將該類下的loadClass方法注冊到類加載隊列中,之后當new一個新的類的時候,php會在所有注冊的類加載函數中進行查找(執行注冊進來的方法)。

LoadClass方法


執行findFile方法

如果ClassLoader下的classmap數組中有相應的類,直接返回;如果在missingFiles中有紀錄這個類是加載不到的,直接返回false。如果apcu前綴不為空且在php.ini配置中開啟了apc功能,則使用apcu_fetch查詢類是否存在根據文件名,帶上文件后綴.php在psr0和psr4中進行查找。如果在第三步之中找到相應class,則在第二步的前提條件下,將類路徑借助apcu_add存起來。如果以上都找不到相應的類,則將類紀錄在missFiles數組中。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 利津县| 河池市| 广宗县| 龙海市| 洪洞县| 松原市| 江城| 赤水市| 仙桃市| 灵台县| 治县。| 蛟河市| 海宁市| 阜阳市| 泽普县| 贵南县| 白水县| 陆川县| 焦作市| 桃园县| 敖汉旗| 资阳市| 海伦市| 宜都市| 石屏县| 富川| 黄平县| 阳泉市| 汉沽区| 灵宝市| 宁远县| 墨竹工卡县| 民勤县| 时尚| 绥江县| 郧西县| 略阳县| 专栏| 大庆市| 万载县| 安乡县|