下面由composer教學專欄帶大家回顧一下composer,希望對需要的朋友有幫助!
Composer是PHP社群推薦的依賴管理工具。 Composer之於PHP猶如npm之於Node,幾乎是做現代化PHP開發的必備技能。本文簡要回顧相關概念和Composer用法。
拓展和套件
與之相關的概念是框架和函式庫,關於框架和函式庫的區別,可以查看本人之前寫的這篇文章
拓展和包是兩個非常相近的概念。在PHP世界裡,一般可以這樣理解和區分兩者:拓展(extension)和模組(module)等價,是用C語言寫的功能合集;包(package)和庫(library)等價,主要是用PHP實現的功能集;拓展以動態連結庫(dll或so)的形式加載,套件則是透過require/include方式加載。絕大部分時候,兩者混用不會造成理解上的困難。
常見的拓展包括GD、ZIP、XML、MySQLi、OPCache等,常見的套件包括PHPMailer、PHPOffice、HTMLPurifier等。
PEAR和PECL
在Composer流行之前,PEAR和PECL是更為PHP開發者所知的兩個工具(社群)。 PEAR是PHP拓展與應用倉庫(PHP Extension and Application Repository)的縮寫,官網http://pear.php.net ;PECL是PHP拓展社群庫(PHP Extension Community Library)的縮寫,官網http://pecl. php.net。
兩者的差異可用拓展和套件來區分:PECL託管拓展,原始碼多為C文件,例如APC、AMPQ等;PEAR託管包,功能用PHP實現,如PHP CodeSniffer、HTTP Request等;PEAR對應pear指令,PECL對應pecl指令,可用這兩個指令安裝和管理拓展和套件(pear的build/pickle
子指令也可以編譯PECL中的拓展)。兩者互為補充,官網以姊妹(sisters)形容兩者的關係。
PECL是官方拓展的補充,目前仍處於活躍狀態,一些優秀的拓展有成為官方拓展的潛質。韓天峰大神的swoole拓展也託管在PECL中,國內名氣非常高。相比之下PEAR已是明日黃花。 PEAR2和Pyrus(下一代的PEAR套件安裝工具,基於PHP5.3 構建,官網http://pear2.php.net)的出現也未能挽救PEAR。 PEAR沒落伴隨著本文主角Composer的崛起。
PEAR的定位是“提供可重複使用的PHP元件”,以中心化的方式為開發者提供功能包。中心化發布的方式保證了程式碼的質量,同時帶來維護上的不便:透過評審的包才能發布,包過時現象嚴重。 PEAR安裝的套件是全域的,不能為單獨專案安裝依賴套件,非特權使用者不能自行安裝依賴套件。其他缺點還包括糟糕的依賴管理。隨著Github的流行和Composer的出現,套件管理進入Composer時代。 PEAR已經完成其歷史使命,可以安心的去了。
Composer
嚴格來說,Composer的定位是依賴管理工具而非套件管理器。 Composer中文網對Composer工作介紹如下:
Composer 將這樣為你解決問題:a) 你有一個專案依賴若干個函式庫。
b) 其中一些函式庫依賴其他函式庫。
c) 你宣告你所依賴的東西。
d) Composer 會找出哪個版本的套件需要安裝,並安裝它們(將它們下載到你的專案中)。
PEAR能做的事情,Composer都可以做(包括安裝PECL拓展),部分還能做得更好。 Composer預設把套件安裝在專案目錄下,一般使用者就能正常使用(Composer官方建議不要以root身分執行composer指令);鼓勵遵循最佳實務(即大名鼎鼎的PSR規範,詳情請參閱PHP-FIG官網https:/ /www.php-fig.org),極大的推動PHP社區編碼風格的規範化;Composer是去中心化的平台,任何人均可發布代碼包;發布包無需評審,包的質量由用戶投票決定.. 。作為PEAR的繼任者,Composer的表現經受住了社區的考驗,並成為事實上的依賴管理標準工具。
Composer目前已經形成龐大的生態,在數量上,Composer的套件遠遠超過PEAR。由於任何人均可自由發布包且無需評審,Composer生態中的包可能存在代碼品質參差不齊、代碼風格各異、後門漏洞等隱憂。另外Composer的依賴管理以專案為單位,一台機器上可能多次安裝同一個套件。但瑕不掩瑜,整體而言,Composer極大的改變了PHP的開發生態,促進了程式碼交流和社群發展。
Composer用法
Composer為管理的專案的依賴而生,專案中的composer.json檔案是其工作的依據。該文件中最重要的部分是require部分,該部分告訴Composer期望安裝的套件及其版本,例如:
{ "name": "tlanyan/foo", "version": "1.0.0", .... "require": { "php": ">=5.4.0", "yiisoft/yii2": ">=2.0.6", "yiisoft/yii2-swiftmailer": "*", "yiisoft/yii2-redis": ">=2.0.0", "smarty/smarty": "< =3.1.25", "yiisoft/yii2-smarty": ">=2.0.0", "phpoffice/phpexcel": ">=1.8.0", "tecnickcom/tcpdf": "~6.2.0" }, .... }
然后运行composer install
命令,Composer会自动分析依赖,安装最合适的包到vendor
目录下。加-v(-vv, -vvv)选项会打印命令执行过程中的详细信息。安装完毕后,vendor
目录下会生成autoload.php
文件。在项目的入口文件中包含此文件: require __DIR__ . "/vendor/autoload.php";
,接下来便可在项目的任何地方引用依赖包中的接口和类。
除install
命令,Composer提供了许多其他命令管理依赖。常用的命令场景包括:查找依赖、引入依赖、安装依赖、更新依赖。分别对应的命令是:
-
composer search
: 根据关键字查找依赖包,例如查找本人发布的包:composer search tlanyan
。该命令等同于上https://packagist.org进行包查找; -
composer require
: 引入依赖,声明项目或者全局(global,用户名全局,非系统全局)依赖某个包, 例如声明需要swiftmailer包:composer require [global] "swiftmailer/swiftmailer:dev-master"
;该命令更新composer.json文件,并默认立即安装依赖(--no-update选项可阻止默认安装);效果等同于编辑composer.json文件,然后执行install命令; -
composer install
:安装composer.json声明的依赖包,最终安装的依赖包版本可能取决于有无composer.lock文件; -
composer update
: 更新依赖到最新版本,相当于删除composer.lock文件后执行composer install
。
以上四条命令涵盖使用Composer的大部分场景。以下是几个常用的辅助命令,与依赖分析相关:
-
composer info
: 查看安装的依赖包信息,与composer show
等价; -
composer dumpautoload
: 加-o选项可导出优化的加载器; -
composer why(-not)
: 查看(不)安装某个包的原因。
总结
从拷贝第三方代码到项目中(1994),到PEAR安装依赖包(1999),再到Composer兴起(2012),PHP社区经历了将近20年的探索。PHP这门古老的语言,也在不断的发展更新,在web领域一直发光发热。Composer作为目前PHP包依赖管理的最佳工具,值得每一位PHP开发人员掌握。
以上是回顧一下composer的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Composer是PHP的依賴管理工具,通過composer.json文件管理項目依賴。 1)解析composer.json獲取依賴信息;2)解析依賴關係形成依賴樹;3)從Packagist下載並安裝依賴到vendor目錄;4)生成composer.lock文件鎖定依賴版本,確保團隊一致性和項目可維護性。

AI能在音樂創作領域大展身手。 1)AI通過機器學習和深度學習生成音樂,提升多樣性和創新性。 2)AI作曲可輔助作曲家,提供靈感和創意。 3)實際應用中需優化性能,解決生成音樂的連貫性和創新性問題。

我們需要Composer因為它能有效管理PHP項目的依賴,避免版本衝突和手動管理庫的麻煩。 Composer通過composer.json聲明依賴,並使用composer.lock確保版本一致,簡化了依賴管理過程,提高了項目穩定性和開發效率。

AI可以幫助優化Composer的使用,具體方法包括:1.依賴管理優化:AI分析依賴關係,建議最佳版本組合,減少衝突。 2.自動化代碼生成:AI生成符合最佳實踐的composer.json文件。 3.代碼質量提升:AI檢測潛在問題,提供優化建議,提高代碼質量。這些方法通過機器學習和自然語言處理技術實現,幫助開發者提高效率和代碼質量。

要成為一名作曲家,需掌握音樂理論、和聲學、對位法,並熟悉樂器音色和演奏技巧。作曲家通過音樂表達情感和故事,創作過程涉及從想法到作品的構建和完善。

識別作曲家的關鍵步驟包括:1)分析作曲家的風格特徵,如貝多芬的戲劇性和力量;2)了解作曲家的歷史背景和文化影響,如巴赫的巴洛克時期風格;3)綜合分析作品的旋律、和聲、節奏和結構,避免僅依賴單一元素導致誤判。

Composer'sfutureinPHPdevelopmentwithAIincludes:1)AI-enhanceddependencymanagementforsuggestinglibraries,2)AI-drivencodegenerationfortailoredboilerplate,and3)predictivemaintenanceforupdatesandpatches,butfaceschallengeslikedataprivacyandAIbias.

成為一名成功的作曲家需要具備音樂理論、樂器演奏和音響設計等技能,以及敏銳的靈感捕捉和不斷的作品修改能力。作曲家通過這些技能和特質,將情感和思想轉化為音樂作品,激發聽眾共鳴。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!