目錄
拓展和套件
PEAR和PECL
Composer
Composer用法
总结
首頁 開發工具 composer 回顧一下composer

回顧一下composer

Dec 02, 2020 pm 03:07 PM
composer php

下面由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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱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

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 Apr 18, 2025 am 11:48 AM

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 解決 Craft CMS 中的緩存問題:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS開發網站時,常常會遇到資源文件緩存的問題,特別是當你頻繁更新CSS和JavaScript文件時,舊版本的文件可能仍然被瀏覽器緩存,導致用戶無法及時看到最新的更改。這個問題不僅影響用戶體驗,還會增加開發和調試的難度。最近,我在項目中遇到了類似的困擾,經過一番探索,我找到了wiejeben/craft-laravel-mix這個插件,它完美地解決了我的緩存問題。

繼續使用PHP:耐力的原因 繼續使用PHP:耐力的原因 Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

laravel怎麼查看版本號 laravel查看版本號方法 laravel怎麼查看版本號 laravel查看版本號方法 Apr 18, 2025 pm 01:00 PM

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

如何使用 Composer 簡化郵件營銷:DUWA.io 的應用實踐 如何使用 Composer 簡化郵件營銷:DUWA.io 的應用實踐 Apr 18, 2025 am 11:27 AM

在進行郵件營銷活動時,我遇到了一個棘手的問題:如何高效地創建並發送HTML格式的郵件。傳統的方法是手動編寫代碼並使用SMTP服務器發送郵件,但這不僅耗時,而且容易出錯。在嘗試了多種解決方案後,我發現了DUWA.io,這是一個簡單易用的RESTAPI,能夠幫助我快速創建和發送HTML郵件。為了進一步簡化開發流程,我決定使用Composer來安裝和管理DUWA.io的PHP庫——captaindoe/duwa。

使用DICR/YII2-Google將Google API集成在YII2中 使用DICR/YII2-Google將Google API集成在YII2中 Apr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko

See all articles