国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP回顧之Composer

Ocean / 870人閱讀

摘要:本文簡(jiǎn)要回顧相關(guān)概念和用法。相比之下已是明日黃花。分別對(duì)應(yīng)的命令是根據(jù)關(guān)鍵字查找依賴包,例如查找本人發(fā)布的包。作為目前包依賴管理的最佳工具,值得每一位開發(fā)人員掌握。

轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/php-review...
PHP回顧系列目錄

PHP基礎(chǔ)

web請(qǐng)求

cookie

web響應(yīng)

session

數(shù)據(jù)庫(kù)操作

加解密

Composer是PHP社區(qū)推薦的依賴管理工具。Composer之于PHP猶如npm之于Node,幾乎是做現(xiàn)代化PHP開發(fā)的必備技能。本文簡(jiǎn)要回顧相關(guān)概念和Composer用法。

拓展和包

與之相關(guān)的概念是框架和庫(kù),關(guān)于框架和庫(kù)的區(qū)別,可以查看本人之前寫的這篇文章

拓展和包是兩個(gè)非常相近的概念。在PHP世界里,一般可以這樣理解和區(qū)分兩者:拓展(extension)和模塊(module)等價(jià),是用C語(yǔ)言寫的功能合集;包(package)和庫(kù)(library)等價(jià),主要是用PHP實(shí)現(xiàn)的功能合集;拓展以動(dòng)態(tài)鏈接庫(kù)(dll或so)的形式加載,包則是通過(guò)require/include方式加載。絕大部分時(shí)候,兩者混用不會(huì)造成理解上的困難。

常見的拓展包括GD、ZIP、XML、MySQLi、OPCache等,常見的包包括PHPMailer、PHPOffice、HTMLPurifier等。

PEAR和PECL

在Composer流行之前,PEAR和PECL是更為PHP開發(fā)者所知的兩個(gè)工具(社區(qū))。PEAR是PHP拓展和應(yīng)用倉(cāng)庫(kù)(PHP Extension and Application Repository)的縮寫,官網(wǎng)http://pear.php.net ;PECL是PHP拓展社區(qū)庫(kù)(PHP Extension Community Library)的縮寫,官網(wǎng)http://pecl.php.net。

兩者的區(qū)別可用拓展和包來(lái)區(qū)分:PECL托管拓展,源代碼多為C文件,例如APC、AMPQ等;PEAR托管包,功能用PHP實(shí)現(xiàn),如PHP CodeSniffer、HTTP Request等;PEAR對(duì)應(yīng)pear命令,PECL對(duì)應(yīng)pecl命令,可用這兩個(gè)命令安裝和管理拓展和包(pear的build/pickle子命令也可以編譯PECL中的拓展)。兩者互為補(bǔ)充,官網(wǎng)以姐妹(sisters)形容兩者的關(guān)系。

PECL是官方拓展的補(bǔ)充,目前仍處于活躍狀態(tài),一些優(yōu)秀的拓展有成為官方拓展的潛質(zhì)。韓天峰大神的swoole拓展也托管在PECL中,國(guó)內(nèi)名氣非常高。相比之下PEAR已是明日黃花。PEAR2和Pyrus(下一代的PEAR包安裝工具,基于PHP5.3+構(gòu)建,官網(wǎng)http://pear2.php.net)的出現(xiàn)也未能挽救PEAR。PEAR沒落伴隨著本文主角Composer的興起。

PEAR的定位是“提供可復(fù)用的PHP組件”,以中心化的方式為開發(fā)者提供功能包。中心化發(fā)布的方式保證了代碼的質(zhì)量,同時(shí)帶來(lái)維護(hù)上的不便:通過(guò)評(píng)審的包才能發(fā)布,包過(guò)時(shí)現(xiàn)象嚴(yán)重。PEAR安裝的包是全局的,不能為多帶帶項(xiàng)目安裝依賴包,非特權(quán)用戶不能自行安裝依賴包。其他缺點(diǎn)還包括糟糕的依賴管理。隨著Github的流行和Composer的出現(xiàn),包管理進(jìn)入Composer時(shí)代。PEAR已經(jīng)完成其歷史使命,可以安心的去了。

Composer

嚴(yán)格來(lái)說(shuō),Composer的定位是依賴管理工具而非包管理器。Composer中文網(wǎng)對(duì)Composer工作介紹如下:

Composer 將這樣為你解決問題:

a) 你有一個(gè)項(xiàng)目依賴于若干個(gè)庫(kù)。

b) 其中一些庫(kù)依賴于其他庫(kù)。

c) 你聲明你所依賴的東西。

d) Composer 會(huì)找出哪個(gè)版本的包需要安裝,并安裝它們(將它們下載到你的項(xiàng)目中)。

PEAR能做的事情,Composer都能做(包括安裝PECL拓展),部分還能做得更好。Composer默認(rèn)把包安裝在項(xiàng)目目錄下,普通用戶就能正常使用(Composer官方建議不要以root身份執(zhí)行composer命令);鼓勵(lì)遵循最佳實(shí)踐(即大名鼎鼎的PSR規(guī)范,詳情見PHP-FIG官網(wǎng)https://www.php-fig.org),極大的推動(dòng)PHP社區(qū)編碼風(fēng)格的規(guī)范化;Composer是去中心化的平臺(tái),任何人均可發(fā)布代碼包;發(fā)布包無(wú)需評(píng)審,包的質(zhì)量由用戶投票決定...作為PEAR的繼任者,Composer的表現(xiàn)經(jīng)受住了社區(qū)的考驗(yàn),并成為事實(shí)上的依賴管理標(biāo)準(zhǔn)工具。

Composer目前已經(jīng)形成龐大的生態(tài),在數(shù)量上,Composer的包遠(yuǎn)超PEAR。由于任何人均可自由發(fā)布包且無(wú)需評(píng)審,Composer生態(tài)中的包可能存在代碼質(zhì)量參差不齊、代碼風(fēng)格各異、后門漏洞等隱憂。另外Composer的依賴管理以項(xiàng)目為單位,一臺(tái)機(jī)器上可能多次安裝同一個(gè)包。但瑕不掩瑜,總體而言,Composer極大的改變了PHP的開發(fā)生態(tài),促進(jìn)了代碼交流和社區(qū)發(fā)展。

Composer用法

Composer為管理的項(xiàng)目的依賴而生,項(xiàng)目中的composer.json文件是其工作的依據(jù)。該文件中最重要的部分是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"
    },
    ....
}

然后運(yùn)行composer install命令,Composer會(huì)自動(dòng)分析依賴,安裝最合適的包到vendor目錄下。加-v(-vv, -vvv)選項(xiàng)會(huì)打印命令執(zhí)行過(guò)程中的詳細(xì)信息。安裝完畢后,vendor目錄下會(huì)生成autoload.php文件。在項(xiàng)目的入口文件中包含此文件: require __DIR__ . "/vendor/autoload.php";,接下來(lái)便可在項(xiàng)目的任何地方引用依賴包中的接口和類。

install命令,Composer提供了許多其他命令管理依賴。常用的命令場(chǎng)景包括:查找依賴、引入依賴、安裝依賴、更新依賴。分別對(duì)應(yīng)的命令是:

composer search: 根據(jù)關(guān)鍵字查找依賴包,例如查找本人發(fā)布的包:composer search tlanyan。該命令等同于上https://packagist.org進(jìn)行包查找;

composer require: 引入依賴,聲明項(xiàng)目或者全局(global,用戶名全局,非系統(tǒng)全局)依賴某個(gè)包, 例如聲明需要swiftmailer包: composer require [global] "swiftmailer/swiftmailer:dev-master";該命令更新composer.json文件,并默認(rèn)立即安裝依賴(--no-update選項(xiàng)可阻止默認(rèn)安裝);效果等同于編輯composer.json文件,然后執(zhí)行install命令;

composer install:安裝composer.json聲明的依賴包,最終安裝的依賴包版本可能取決于有無(wú)composer.lock文件;

composer update: 更新依賴到最新版本,相當(dāng)于刪除composer.lock文件后執(zhí)行composer install

以上四條命令涵蓋使用Composer的大部分場(chǎng)景。以下是幾個(gè)常用的輔助命令,與依賴分析相關(guān):

composer info: 查看安裝的依賴包信息,與composer show等價(jià);

composer dumpautoload: 加-o選項(xiàng)可導(dǎo)出優(yōu)化的加載器;

composer why(-not): 查看(不)安裝某個(gè)包的原因。

總結(jié)

從拷貝第三方代碼到項(xiàng)目中(1994),到PEAR安裝依賴包(1999),再到Composer興起(2012),PHP社區(qū)經(jīng)歷了將近20年的探索。PHP這門古老的語(yǔ)言,也在不斷的發(fā)展更新,在web領(lǐng)域一直發(fā)光發(fā)熱。Composer作為目前PHP包依賴管理的最佳工具,值得每一位PHP開發(fā)人員掌握。

參考

https://benramsey.com/blog/20...

http://fabien.potencier.org/t...

http://docs.phpcomposer.com

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/28514.html

相關(guān)文章

  • PHP回顧創(chuàng)建自己的Composer

    摘要:想要更好的利用協(xié)同工作,學(xué)會(huì)創(chuàng)建自己的包是一項(xiàng)必不可少的技能。編輯項(xiàng)目的或,增加一項(xiàng)配置,例如以上配置使用中國(guó)全量鏡像網(wǎng)站作為默認(rèn)中央倉(cāng)庫(kù)。創(chuàng)建自己的包創(chuàng)建一個(gè)包只需兩步填寫包描述信息寫代碼。通過(guò)簡(jiǎn)單兩步,我們創(chuàng)建的自己的包。 轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) ...

    KoreyLee 評(píng)論0 收藏0
  • PHP回顧執(zhí)行流程及相關(guān)概念

    摘要:通過(guò),腳本層無(wú)需過(guò)多考慮執(zhí)行的具體環(huán)境,而本身則可以讓針對(duì)自己的特點(diǎn)給出特有實(shí)現(xiàn)。模式下,也只執(zhí)行一次。這幾個(gè)概念的關(guān)系如下網(wǎng)關(guān)協(xié)議,與語(yǔ)言無(wú)關(guān),所以與關(guān)系也不大。總結(jié)本文簡(jiǎn)要回顧了程序的架構(gòu)和執(zhí)行流程,并對(duì)幾個(gè)容易混淆概念做了介紹。 轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie we...

    jsdt 評(píng)論0 收藏0
  • PHP回顧socket編程

    摘要:如果你想體驗(yàn)原味編程,用開頭的比較適合否則建議使用流函數(shù)。有關(guān)流的知識(shí),請(qǐng)參考本人之前的博文回顧之流。接下來(lái)我們用流函數(shù)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的客戶端和服務(wù)端。流函數(shù)中的和兩個(gè)函數(shù)是我們想要的。本文目的是簡(jiǎn)要介紹中的編程,行文到此已經(jīng)達(dá)到目的。 轉(zhuǎn)載請(qǐng)注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie w...

    tomorrowwu 評(píng)論0 收藏0
  • PHP回顧發(fā)送郵件

    摘要:隨著云服務(wù)器的盛行,幾乎無(wú)法以指向本機(jī)的域名向外發(fā)送郵件,除了在本機(jī)內(nèi)發(fā)送提醒郵件,用處已然不大。發(fā)送效率低非面向?qū)ο蟮恼{(diào)用方式,配置麻煩以及云服務(wù)器廠商的封鎖,是使用函數(shù)的最大阻礙。 轉(zhuǎn)載請(qǐng)注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) session 數(shù)據(jù)庫(kù)操作 加解密 Co...

    smallStone 評(píng)論0 收藏0
  • PHP回顧IO

    摘要:命令行時(shí)返回值為,標(biāo)準(zhǔn)輸入輸出均指向終端可用進(jìn)程號(hào)查看。會(huì)在腳本執(zhí)行完畢后關(guān)閉三個(gè)流,無(wú)需用戶手動(dòng)關(guān)閉。與遠(yuǎn)程網(wǎng)址交互是一個(gè)請(qǐng)求和響應(yīng)的過(guò)程,其中細(xì)節(jié)可參考本人之前的文章回顧之請(qǐng)求和回顧之響應(yīng),也可參考協(xié)議的權(quán)威文檔。 轉(zhuǎn)載請(qǐng)注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) ses...

    happen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<