真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Composer加載方式是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹Composer加載方式是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)擁有十年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)服務(wù),對(duì)于網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、成都App定制開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名注冊(cè)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

Composer的自動(dòng)加載。

我們以Yii2為例,當(dāng)我們通過Composer生成了一個(gè)Yii2程序后,會(huì)在vendor下建立一個(gè)autoload.php文件,它負(fù)責(zé)幫我們自動(dòng)加載vendor內(nèi)的各種庫(yii2核心庫也在vendor內(nèi),你懂得!)。

而你一定知道Yii2的入口文件index.php有一行。

require(__DIR__ . '/../vendor/autoload.php');

由此可見,Yii2對(duì)Composer的友好程度,也難怪~孤木不成林,Yii2也要靠無數(shù)個(gè)Composer擴(kuò)展枝干才能變成參天大樹。

下面開始正式講解Composer的autoload,告訴你各式各樣擴(kuò)展安裝后,我們并沒有使用include / require,那么Composer是如何幫我們找到他們的那?

目前為止,Composer一共支持4種自動(dòng)加載方式

PSR-0
PSR-4
class-map
直接包含file

這四種方式足以讓Composer涵蓋地球上所有的PHP第三方擴(kuò)展庫。

PSR是一套PHP開發(fā)標(biāo)準(zhǔn),現(xiàn)在大多數(shù)主流框架都在支持,工兵連已經(jīng)開專題分享PSR干貨。

PSR-4

PSR-4是Composer推薦使用的一種方式,因?yàn)樗资褂貌⒛軒砀?jiǎn)潔的目錄結(jié)構(gòu)。在一個(gè)擴(kuò)展的composer.json里是這樣進(jìn)行配置的:

{
    "autoload": {
        "psr-4": {
            "Foo\\": "src/",
        }
    }
}

key和value就定義出了namespace以及其對(duì)應(yīng)的目錄映射。按照PSR-4的規(guī)則,當(dāng)試圖自動(dòng)加載"Foo\Bar\Baz"類的使用,會(huì)去尋找"srcBarBaz.php"這個(gè)文件,如果它存在則加載,要注意的是此時(shí)"Foo\"并不會(huì)出現(xiàn)在文件路徑中。

而composer.json這樣的配置會(huì)被Composer轉(zhuǎn)換成namespace與文件目錄的MAP形式,并存在vendor/composer/autoload_psr4.php文件中,所以如果你安裝的某個(gè)擴(kuò)展自動(dòng)加載是PSR-4形式,你可以在autoload_psr4.php找到它的真實(shí)路徑。

PSR-0

這是一個(gè)已經(jīng)過時(shí)的標(biāo)準(zhǔn),那是在遙遠(yuǎn)的PHP5.2時(shí)代,你我都知道,PHP5.3之后才有了類似namespace這樣的高級(jí)屬性,所以PSR-0更多是考慮<=5.2時(shí)代的擴(kuò)展,于是乎PSR組織用了一個(gè)偽namespace的做法。

有點(diǎn)蒙圈么?那我們來看代碼你就明白了。

{
    "autoload": {
        "psr-0": {
            "Foo\\": "src/",
        }
    }
}

我們來分析這個(gè)擴(kuò)展的加載方式,什么是偽namespace那?當(dāng)我們用這個(gè)庫的時(shí)候

$model = new Foo_Bar_Baz();

對(duì)的,PSR-0的時(shí)代,有很多以下劃線分隔的類名,它代表。。。它代表。。。

src/Foo/Bar/Baz.php

聰明的你一定明白什么是偽namespace了吧,通過命名的下劃線來映射目錄結(jié)構(gòu)。

哎,那個(gè)時(shí)代的標(biāo)準(zhǔn)制定者們也真心不容易呀。

Class-map方式

{
    "autoload": {
        "classmap": ["src/", "lib/"]
    }
  }

這個(gè)加載方式比較容易理解,當(dāng)Composer開始安裝擴(kuò)展的時(shí)候,會(huì)根據(jù)composer.json里的這個(gè) autoload 告訴的方式classmap,來遍歷src、lib目錄然后將里面的類文件和其路徑一一對(duì)應(yīng),存放到vendor/composer/autoload_classmap.php內(nèi)。

例如src/下有一個(gè)BaseController類,那么在autoload_classmap.php文件中,就會(huì)生成這樣的配置:

'BaseController' => $baseDir . '/src/BaseController.php'

若你還不懂,去看看autoload_classmap.php吧。

File方式

有了上面這些加載方式還不夠么? 是的,還會(huì)有一些供全局使用的比如幫助等這樣函數(shù),那么好吧,我們就講這些文件直接包含進(jìn)來好了。

{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}

Composer安裝擴(kuò)展后會(huì)將其放到

vendor/composer/autoload_files.php

以上是“Composer加載方式是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱欄目:Composer加載方式是什么-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/djpjdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部