搜尋
首頁開發工具composer回顧一下composer
回顧一下composerDec 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刪除
Composer是啥Composer是啥Dec 25, 2023 pm 03:06 PM

Composer是PHP的依赖管理工具,它允许开发者将第三方库和框架与自己的项目进行集成。它的主要功能包括:1、依赖管理;2、版本控制;3、自动加载;4、扩展开发;5、集成其他工具。它简化了PHP项目的依赖管理过程,确保项目的稳定性和可维护性。通过使用Composer,开发者可以更加高效地管理自己的项目和集成第三方库和框架。

四大步教你在Debian11上安装使用Composer!四大步教你在Debian11上安装使用Composer!Nov 08, 2022 pm 04:32 PM

本文由composer​教程栏目给大家介绍关于在Debian11上是怎么一步步安装,以及使用Composer的 ,非常详细哦~希望对需要的朋友有所帮助!

composer 怎么修改php路径composer 怎么修改php路径Oct 24, 2022 am 11:33 AM

composer修改php路径的方法:1、搜索“composer.bat”并复制到项目文件夹;2、编辑“composer.bat”,将内容修改为“@ECHO OFF php "%~dp0composer.phar" %*”即可。

PHP使用Composer安装和管理依赖包PHP使用Composer安装和管理依赖包Jun 18, 2023 pm 03:30 PM

在PHP开发中,我们经常要处理各种依赖包,这些依赖包可能是其他开发者编写的PHP库文件,也可能是一些第三方工具和框架。为了方便管理这些依赖包,我们可以使用Composer来进行相关的安装和管理工作。Composer是一个开源的PHP依赖管理工具,它可以帮助我们自动化安装、更新和卸载PHP依赖包。通过Composer,我们可以轻松地管理我们应用中的不同依赖,同

使用Composer和PHP包管理器的最佳实践使用Composer和PHP包管理器的最佳实践May 23, 2023 am 08:29 AM

随着PHP的日益流行,PHP开发人员面临着许多挑战,其中包括代码管理、可重用性和依赖性管理。这些问题可以使用包管理器来解决,而Composer是PHP最受欢迎的包管理器之一。在本文中,我们将探讨使用Composer和PHP包管理器的最佳实践,从而提高您的PHP开发效率和代码质量。何为Composer?Composer是一款PHP包管理器,它可以轻松管理PHP

创建composer项目的步骤创建composer项目的步骤Feb 19, 2024 pm 07:13 PM

Composer是一个PHP的依赖管理工具,可以帮助开发者有效地管理项目中的依赖关系。通过Composer,我们可以轻松地引入第三方库、框架以及其他项目所需的各种资源。创建一个Composer项目非常简单,只需按照以下步骤进行操作:首先需要确保在本地已经安装了Composer。可以在终端中运行composer-v命令来确认是否已经安装成功。在项目的根目录中

如何在composer上安装和使用如何在composer上安装和使用Feb 19, 2024 pm 09:38 PM

composer是PHP的依赖管理工具,可以方便地安装、更新和管理项目所需的第三方库和依赖。本文将介绍composer的安装与使用,并提供详细的代码示例。一、安装Composer要使用composer,首先需要将其安装到本地开发环境中。以下演示了在Windows系统中安装composer的步骤:打开Composer的官方网站(https://getcompo

composer动画怎么保存composer动画怎么保存Apr 09, 2024 pm 02:02 PM

要保存 Composer 动画,可以使用 Lottie 文件格式,具体步骤为:导出为 JSON 文件;使用 Lottie 工具创建 Lottie 文件;从 Lottie 文件导出为多种格式,包括 JSON、GIF、MP4、SWF、HTML。

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。