摘要:然而各自為政的打包方式依賴關(guān)系的處理,導(dǎo)致了很難將兩個(gè)開源項(xiàng)目集成到一起。雖然有這種官方支持的包管理工具,但是依然沒有很好的統(tǒng)一的依賴關(guān)系管理的辦法。項(xiàng)目編譯和打包依賴關(guān)系的解決都可以很輕松的實(shí)現(xiàn)。
簡(jiǎn)介
現(xiàn)在軟件規(guī)模越來越大,PHP項(xiàng)目的開發(fā)模式和許多年前已經(jīng)有了很大變化。記得初學(xué)PHP那會(huì)兒,boblog是一個(gè)很好的例子,幾乎可以代表PHP項(xiàng)目的開發(fā)模式。當(dāng)時(shí)PHP 5.x以上的版本剛開始流行,仍然有大量的生產(chǎn)環(huán)境使用PHP4.x。由于歷史遺留的問題,OOP思想在PHP項(xiàng)目中還不是那么廣泛流行。隨著PHP5.3的發(fā)布,PHP項(xiàng)目規(guī)模的擴(kuò)大,在其他語言領(lǐng)域大展身手的OOP開發(fā)模式也在PHP中嶄露頭角。
大型項(xiàng)目不可能是從頭開始的,使用社區(qū)已經(jīng)提供的資源可以為項(xiàng)目帶來很大的便利。然而各自為政的打包方式、依賴關(guān)系的處理,導(dǎo)致了很難將兩個(gè)開源項(xiàng)目集成到一起。雖然有pear這種PHP官方支持的包管理工具,但是依然沒有很好的統(tǒng)一的依賴關(guān)系管理的辦法。直到Composer的出現(xiàn)。
Composer的依賴關(guān)系管理風(fēng)格,看上去更像Java的Maven。項(xiàng)目編譯和打包、依賴關(guān)系的解決都可以很輕松的實(shí)現(xiàn)。再也不用費(fèi)神去尋找或者更新第三方庫,或者將他們集成到一起。這一切全部都可以交給Composer來完成。
例子
首先來看一個(gè)類似于Helloworld的例子,讓我們對(duì)Composer先有一個(gè)感性的認(rèn)識(shí)吧。
如何在一個(gè)PHP項(xiàng)目中啟用Composer,很簡(jiǎn)單,只需要在項(xiàng)目根目錄中創(chuàng)建一個(gè)composer.json文件即可,它包含如下內(nèi)容:
{ "require": { "monolog/monolog": "1.2.*" } }
這樣我們便添加了對(duì)monolog這個(gè)庫的引用。沒錯(cuò),就是這樣簡(jiǎn)單。不過,你還需要使用composer來為你更新依賴包,打開你的Shell,切換到項(xiàng)目目錄下執(zhí)行:
composer install
這時(shí),Composer便自動(dòng)從互聯(lián)網(wǎng)上更新指定依賴的庫了。你會(huì)發(fā)現(xiàn)你的項(xiàng)目文件夾里面多了一個(gè)vendor文件夾,那就是依賴庫包了。
接下來,你需要在你的系統(tǒng)的公共入口文件中引用自動(dòng)加載器,以便自動(dòng)加載類:
require "vendor/autoload.php";
安裝
上面的例子讓大家對(duì)composer的使用有了一個(gè)大概的認(rèn)識(shí)。下面將向大家介紹如何在PHP環(huán)境中安裝composer。
Unix/Linux/OSX環(huán)境
很幸運(yùn),利用Unix Like環(huán)境安裝composer是一件很簡(jiǎn)單的事情。只需要一行命令:
curl -sS https://getcomposer.org/installer | php
此時(shí)會(huì)為你在當(dāng)前工作目錄安裝composer.phar文件,使用php composer.phar即可運(yùn)行。當(dāng)然,你可能更想讓composer變成像其他一樣的Unix命令,很簡(jiǎn)單,只需要再加一步:
mv composer.phar /usr/local/bin/composer
注意,在權(quán)限受限的系統(tǒng)上,你可能需要使用sudo命令來提升至管理員賬號(hào)執(zhí)行。
這時(shí),你就可以像例子里面那樣使用composer了。
Windows環(huán)境
Composer官方推薦使用安裝包進(jìn)行安裝,據(jù)說下載Composer-Setup.exe這個(gè)即可用向?qū)J桨惭b。
關(guān)于手工安裝的方法,請(qǐng)參考http://getcomposer.org/doc/00-intro.md的介紹吧。
自動(dòng)加載
為了實(shí)現(xiàn)PHP類的隨取隨用,類的命名空間定義建議遵從一定的規(guī)則。這種規(guī)則可以是某一項(xiàng)目組約定的。不過為了使得類庫統(tǒng)一,PHP-FIG項(xiàng)目指定了一種PHP命名空間的規(guī)范PSR-0,被一些流行PHP項(xiàng)目采用。Composer支持這種規(guī)范的類庫自動(dòng)裝載器,只需要向composer.json文件中添加autoload節(jié)點(diǎn)即可:
{ "autoload": { "psr-0": {"Acme": "src/"} } }
關(guān)于PSR-0規(guī)范,有這么幾點(diǎn)重要的要求:
命名空間規(guī)范參考:( )* 每個(gè)namespace需要一個(gè)頂層空間,即vendor name。用來指定在軟件包級(jí)別上區(qū)別。 命名空間和PHP文件的路徑是一一對(duì)應(yīng)的,最終命名空間分隔符會(huì)被轉(zhuǎn)為DIRECTORY_SEPARATOR 文件名必須為類名.php
關(guān)于這個(gè)規(guī)范,可以參考http://blog.mosil.biz/2012/08/psr-0-autoloading-standard/這篇文章。有關(guān)PSR-0的更多內(nèi)容,可以參考他們的官方網(wǎng)站:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
注意,修改了autoload后,要重新使用composer install。
注意:composer默認(rèn)類庫是使用PSR-0規(guī)范自動(dòng)加載的。所以一般無需額外配置。
查找所需類庫
composer提供了一個(gè)類庫的“商店”,在這里,你可以立即找到想要使用的開源類庫包,然后把他們添加到你的項(xiàng)目中即可。傳送門:https://packagist.org/
打包自己的類庫
將自己的類庫貢獻(xiàn)給大家,首先需要為自己的類庫設(shè)置打包信息(要首先保證自己的類庫是利用composer管理的)。在composer.json文件中設(shè)置:
{ "name": "your-vendor-name/package-name", "require": { "php": ">=5.3.0", "another-vendor/package": "1.*" } }
然后就可以前去https://packagist.org/提交你的類庫了。
關(guān)于composer的更多信息,可以參考:
快速入門:http://getcomposer.org/doc/00-intro.md
文檔們:http://getcomposer.org/doc/
包列表:https://packagist.org/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21634.html
摘要:首先支持下黃老師的視頻網(wǎng)站轉(zhuǎn)型這篇的學(xué)習(xí)筆記也是根據(jù)他的視頻教程寫的,一共十集,講解的很簡(jiǎn)單感興趣的同志們可以上他視頻網(wǎng)站購買視頻,網(wǎng)站地址放在文末我的博客作用自動(dòng)安裝所需要的模塊,自動(dòng)加載管理項(xiàng)目,發(fā)布到網(wǎng)上上去是默認(rèn)的加載組件地址安裝下 首先支持下黃老師的視頻網(wǎng)站轉(zhuǎn)型這篇composer的學(xué)習(xí)筆記也是根據(jù)他的視頻教程寫的,一共十集,講解的很簡(jiǎn)單感興趣的同志們可以上他視頻網(wǎng)站購買視頻...
摘要:默認(rèn)情況下它不會(huì)在全局安裝任何東西。這種想法并不新鮮,受到了和的強(qiáng)烈啟發(fā)。其中一些庫依賴于其他庫。系統(tǒng)要求運(yùn)行需要以上版本。一些敏感的設(shè)置和編譯標(biāo)志也是必須的,但對(duì)于任何不兼容項(xiàng)安裝程序都會(huì)拋出警告。這是的二進(jìn)制文件。 Composer 是 PHP 的一個(gè)依賴管理工具。它允許你申明項(xiàng)目所依賴的代碼庫,它會(huì)在你的項(xiàng)目中為你安裝他們。 1. 依賴管理 Composer 不是一個(gè)包管理器...
摘要:的包管理器是,用來瀏覽并搜索查看最新發(fā)行版下載。的包管理器是下一代的,使用編寫,以格式發(fā)布。二發(fā)布時(shí)間軸三安裝與使用安裝主要是安裝和這兩個(gè)包管理器,然后通過包管理器安裝其他。 PHP社區(qū)提供了幾個(gè)管理擴(kuò)展和包的工具包括Pecl、Pear、Pear2和Composer。在不了解的情況下去使用這些工具必然會(huì)出現(xiàn)困惑,所以下面就簡(jiǎn)單介紹下這幾個(gè)管理工具。 一、簡(jiǎn)介 下面簡(jiǎn)要介紹 Pear、P...
摘要:接觸過的同學(xué)都知道使用作為項(xiàng)目的包管理工具但是并不是獨(dú)有的是的包管理工具這兩者的關(guān)系就像于于一樣但是發(fā)現(xiàn)真正項(xiàng)目中使用還是比較少的所以這里這里寫一遍文章介紹的使用幫助那些對(duì)于還是有點(diǎn)模糊的同學(xué)此文跟沒有任何聯(lián)系安裝的方式就不講了具體安裝方式 接觸過Laravel的同學(xué)都知道,Laravel使用Composer作為項(xiàng)目的包管理工具.但是Composer并不是Laravel獨(dú)有的,Comp...
摘要:一個(gè)聰明的指揮家。是個(gè)很貼心的家伙。和的目的差不多。上面原因不是全部,而且謹(jǐn)慎守規(guī)矩渠道限制也未必是壞事,但是它的確影響了的發(fā)展,而更加具有冒險(xiǎn)精神更加包容和靈活。來了年,就是發(fā)布年后的一天,及提出工具并發(fā)布第一個(gè)版本。如果是和會(huì)簡(jiǎn)單的多。 一個(gè)聰明的指揮家。 明日北哥 sf社區(qū)直播 composer課程,感興趣的記得來看哦 https://segmentfault.com/l/15....
閱讀 2893·2023-04-26 00:26
閱讀 3501·2023-04-25 14:30
閱讀 3394·2021-10-09 09:44
閱讀 3687·2021-09-28 09:35
閱讀 1868·2021-09-22 16:02
閱讀 1259·2021-09-03 10:30
閱讀 3231·2019-08-30 15:53
閱讀 2165·2019-08-30 14:07