搜尋
首頁開發工具composer回顧一下composer

回顧一下composer

Dec 02, 2020 pm 03:07 PM
composerphp

下面由composer教學專欄帶大家回顧一下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提供了许多其他命令管理依赖。常用的命令场景包括:查找依赖、引入依赖、安装依赖、更新依赖。分别对应的命令是:

  1. composer search: 根据关键字查找依赖包,例如查找本人发布的包:composer search tlanyan。该命令等同于上https://packagist.org进行包查找;
  2. composer require: 引入依赖,声明项目或者全局(global,用户名全局,非系统全局)依赖某个包, 例如声明需要swiftmailer包: composer require [global] "swiftmailer/swiftmailer:dev-master";该命令更新composer.json文件,并默认立即安装依赖(--no-update选项可阻止默认安装);效果等同于编辑composer.json文件,然后执行install命令;
  3. composer install:安装composer.json声明的依赖包,最终安装的依赖包版本可能取决于有无composer.lock文件;
  4. composer update: 更新依赖到最新版本,相当于删除composer.lock文件后执行composer install

以上四条命令涵盖使用Composer的大部分场景。以下是几个常用的辅助命令,与依赖分析相关:

  1. composer info: 查看安装的依赖包信息,与composer show等价;
  2. composer dumpautoload: 加-o选项可导出优化的加载器;
  3. composer why(-not): 查看(不)安装某个包的原因。

总结

从拷贝第三方代码到项目中(1994),到PEAR安装依赖包(1999),再到Composer兴起(2012),PHP社区经历了将近20年的探索。PHP这门古老的语言,也在不断的发展更新,在web领域一直发光发热。Composer作为目前PHP包依赖管理的最佳工具,值得每一位PHP开发人员掌握。

以上是回顧一下composer的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
作曲家:PHP開發人員的軟件包經理作曲家:PHP開發人員的軟件包經理May 02, 2025 am 12:23 AM

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

AI集成到作​​曲家:探索潛力AI集成到作​​曲家:探索潛力May 01, 2025 am 12:02 AM

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

作曲家的目的:管理PHP中的項目依賴性作曲家的目的:管理PHP中的項目依賴性Apr 30, 2025 am 12:01 AM

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

作曲家:通過AI的幫助開發PHP作曲家:通過AI的幫助開發PHPApr 29, 2025 am 12:27 AM

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

成為作曲家:培訓,教育和經驗成為作曲家:培訓,教育和經驗Apr 28, 2025 am 12:11 AM

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

確定作曲家:基本要素確定作曲家:基本要素Apr 27, 2025 am 12:27 AM

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

作曲家:PHP開發中AI的未來作曲家:PHP開發中AI的未來Apr 26, 2025 am 12:10 AM

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

作曲家的技能和素質:概述作曲家的技能和素質:概述Apr 25, 2025 am 12:03 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 英文版

SublimeText3 英文版

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