精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

作為PHP開發者請務必了解Composer

開發 后端
Composer是一個非常流行的PHP包依賴管理工具,已經取代PEAR包管理器,對于PHP開發者來說掌握Composer是必須的.

Composer是一個非常流行的PHP包依賴管理工具,已經取代PEAR包管理器,對于PHP開發者來說掌握Composer是必須的.

對于使用者來說Composer非常的簡單,通過簡單的一條命令將需要的代碼包下載到vendor目錄下,然后開發者就可以引入包并使用了.

[[182595]]

其中的關鍵在于你項目定義的composer.json,可以定義項目需要依賴的包(可能有多個),而依賴的包可能又依賴其他的包(這就是組件的好處),這些都不用你煩心,Composer會自動下載你需要的一切,一切在于composer.json的定義.

Composer對于使用者來說是很透明,但是其背后的理念還是需要了解一下的,其的誕生也不是偶然的,得益于Github的快速發展,PHP語言也越來越現代化,顯得更高大上了.

為了理解Composer,先大概了解下其結構:

Composer的結構

  • Composer命令行工具:
    這個理解就比較簡單了,通過使用者定義的Composer.json去下載你需要的代碼,假如只是簡單的使用Composer,那么掌握一些具體命令就完全可以了
  • Autoloading代碼加載器:
    通過Composer,開發者可以通過多種方式去使用,而其中的關鍵在于PHP的命名空間概念,以及PSR-4標準的發展,Composer只是根據這二者開發了一個代碼自動加載器
  • Github:
    有了Github,PHP開發人員可以將開源的代碼托管在這上面,而Composer的發展源于Github,Composer本質上就是將Github上的代碼下載到本地.
  • Packagist:
    對于使用者來說使用的是Composer的命令行工具,那么命令行工具怎么知道有多少包可以被用戶使用呢,這主要就是依賴于Packagist,Packagist是Composer主要的一個包信息存儲庫,包開發者將具體代碼托管到Github上,將包信息提交到Packagist上,這樣使用者就可以通過Composer去使用.
    Composer根據本地定義的composer.json信息去查詢Packagist,Packagist根據Composer.json/Package.json信息解析,最終對應到github倉庫,Composer最終下載代碼的時候還要依賴于Github倉庫上的Composer.json,這里涉及到三種類型的composer.json,含義是不一樣的.
  • Composer.json:
    這是Composer的核心,是Composer的規則,上面也提到了三種類型的Composer.json,在使用的時候一定要注意區分,我初學的時候就總是搞亂.

Composer命令行工具

composer init

使用者可以在自己的項目下創建composer.json以便定義你項目的依賴包,也可以通過composer init交互式的創建composer.json.

composer install

應該是最常用的命令,composer會根據本地的composer.json安裝包,將下載的包放入項目下的vendor目錄下,同時將安裝時候的包版本信息放入到composer.lock,以便鎖定版本.

其實在install的時候,假如發現composer.lock版本和目前vendor目錄下的代碼版本是一致的,則Composer會什么也不做,composer.lock的目的就是讓你安心在目前這個版本下工作,而不獲取***版本的包.

composer update

那么如何更新composer.lock以便獲取到***版本的包呢?通過這個命令即可更新***版本的包

composer config

這個命令還是建議了解下,全局的配置保存在COMPOSER_HOME/config.json,非全局的配置信息則存儲在本項目目錄下.

composer config --list -g
composer config -g notify-on-install false
composer global config bin-dir --absolute

composer create-project

這個命令不常用,但是個人覺得還是很重要的,使用普通的install命令是將項目所有的依賴包下載到本項目vendor目錄下.而通過這個命令則是將所有的代碼及其依賴的包放到一個目錄下,相當于執行了一個git clone命令,一般是包的開發者可能為了修復bug會使用該命令.

composer global

這是一個全局的安裝命令,它允許你在COMPOSER_HOME目錄下執行Composer的命令,比如install,update.當然你的COMPOSER_HOME要在$PATH環境下.

比如執行composer global require fabpot/php-cs-fixer,現在php-cs-fixer命令行可以全局運行了,如果稍后想更新它,只需要運行composer global update

composer dump-autoload

當你修改項目下的composer.json的文件,并不一定要運行composer update命令進行更新,有的時候可以使用該命令來更新加載器,比如你要引用本地自定義的包(不是來自于packagist),后面會通過實踐來說明該命令.

composer require

假如手動或者交互式創建composer.json文件,可以直接使用該命令來安裝包

composer require  cerdic/css-tidy:1.5.2
composer require "ywdblog/phpcomposer:dev-master"

–prefer-source和–prefer-dist參數

–prefer-dist:對于穩定的包來說,一般Composer安裝默認使用該參數,這也能加快安裝,比如有可能直接從packagist安裝了相應的包,而不用實際去Github上下載包.

–prefer-source:假如使用該參數,則會直接從Github上安裝,安裝包后vendor目錄下還含有.git信息

composer require "ywdblog/phpcomposer:dev-master" --prefer-source 
#在vendor/ywdblog/phpcomposer目錄下含有.git信息

如何給Composer添加代理

在國內使用Composer下載特別慢,可以通過二個方法進行加速

"repositories": {
  "packagist": {
      "type": "composer",
      "url": "https://packagist.phpcomposer.com"
  }
}

Autoloading代碼加載器

composer本身集成一個autoloader,支持PSR-4,PSR-0,classmap,files autoloading.

這里通過一個例子來說明通過Composer如何引用classmap,files,本地符合PSR-4標準的代碼

編輯composer.json

"autoload": {
  "classmap": ["othsrc/","classsrc.php"],
  "files": ["othsrc/filesrc.php"],
  "psr-4": {"Foo\Bar\": "src"}  }

composer dump-autoload
通過上述的操作,對于PSR-4來說等同注冊了一個PSR-4 autoloader(從FooBar命名空間)

假如不想使用Composer的autoloader,可以直接包含vendor/composer/autoload_*.php文件,配置自己的加載器.
具體的例子托管在github上,可參考.

Repositories

關于Repositories,了解其不是必須的,但是假如掌握則更能理解Composer,對于Repositories,其中文文檔英文文檔解釋的很好,這里也進行了一些摘抄.

基本概念

包:

Composer是一個依賴管理工具,它在本地安裝一些資源包和包的描述(比如包名稱和對應的版本),比較重要的元數據描述是distsource,dist指向一個存檔,該存檔是對一個資源包的某個版本的數據進行的打包.source指向一個開發中的源,這通常是一個源代碼倉庫(比如git)

資源庫:

一個資源庫是一個包的來源.它是一個packages/versions的列表.

Composer將查看所有你定義的repositories以找到項目需要的資源包(這句話很重要).

默認情況下已經將Packagist.org注冊到Composer(或者理解為Packagist.org是Composer資源庫默認的倉庫類型)

Composer資源庫類型

Composer資源庫包括四種類型,默認的是composer類型,也就是packagist.org所使用的資源類型.

它使用一個單一的packages.json文件,包含了所有的資源包元數據.當你將包發布到pckagist.org上,則默認系統會創建一個packages.json,不過我沒有找到我的包對應的文件.

VCS資源庫類型

假如你想構建一個私有的Composer私有資源庫類型,可以使用該類型,這里舉一個例子,比如你在自己項目的composer.json定義如下,則就可以使用對應的Github上的代碼了.

{
    "repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/ywdblog/phpcomposer"
    }
    ],
    "require": {
        "ywdblog/phpcomposer": "dev-master"
    }
}

當運行composer update的時候,Comoser實際上是從Github上下載包而不是從pckagist.org上下載.

另外假如需要使用Package資源庫類型或者PEAR資源庫類型,參考官方文檔即可,一般在composer.json中定義name、version屬性即可.

Composer.json

在本文上面也多次提到了composer.json,比如你希望使用第三方包則需要在本地定義composer.json,Composer安裝第三方包后,也會在第三方包目錄下發現composer.json,那么這二者都叫composer.json,有什么區別呢?理解這非常的重要.

假如你在自己的項目下面定義一個composer.json,則這個包稱之為ROOT包,這個composer.json定義你項目需要的條件(比如你的項目可能依賴一個第三方包).

composer.json中有些屬性只能被ROOT包使用,比如config屬性只在ROOT包中生效.

一個資源包是不是ROOT包,取決于它的上下文,比如你git clone ywdblog/phpcomposer,則這時候本地phpcomposer目錄就是ROOT包,假如你在本地phpcomposer目錄下composer require ywdblog/phpcomposer,則這時候你的項目phpcomposer就是ROOT包.

了解composer-schema.json參考該網址,Laravel作為一個成熟的框架,其定義的composer.json非常經典

關于包的版本

當使用者在本地配置composer.json的時候,可以指定需要包的特定版本,Composer支持從Github倉庫中下載Tag或者分支下的包.

對于Github上的Tag來說,Packagist會創建對應包的版本,它符合X.Y.Z,vX.Y.Z,X.Y.Z-包類型,就是說Github上雖然只有一個特定版本的包,但Composer支持多種形式的引用方式,比如:

composer require monolog/monolog  1.0.0-RC1 
composer require monolog/monolog  v1.0.0-RC1 
composer require monolog/monolog  1.0.*
composer require monolog/monolog  ~1.10

對于Github上的分支來說,Packagist會創建對應包的版本,假如分支名看起來像一個版本,將創建{分支名}-dev的包版本號,如果分支名看起來不像一個版本號,它將會創建dev-{分支名}形式的版本號

composer require monolog/monolog  master-dev
composer require monolog/monolog  master.x-dev

總結:

理解Composer,最重要的是實踐,***也能明白PSR-4和命名空間,也可以嘗試將你的項目發布到pckagist.org上.

責任編輯:王雪燕 來源: 虞大膽
相關推薦

2016-12-19 15:55:10

PHP開發者Composer

2016-08-05 16:28:05

javascripthtml前端

2013-12-31 10:29:51

2018-06-15 08:43:33

Java堆外內存

2016-03-25 09:29:24

Apple開發工具開發者

2013-09-05 11:04:53

C++開發者

2009-05-25 10:18:29

PHPLAMPGLAMMP

2015-07-23 10:07:22

PHPPHP開發Docker

2022-10-20 15:12:43

JavaScript技巧開發

2011-08-01 16:39:21

Xcode 目錄結構

2018-06-03 08:00:24

AI開發深度學習語言

2010-08-12 14:13:01

Flex開發者

2014-12-15 10:25:21

移動開發像素設計

2010-06-11 13:28:06

PHPPython

2024-10-25 19:32:58

ChatGPT

2019-03-19 14:03:34

PHPPython編程語言

2019-05-16 08:31:43

物聯網物聯網開發IOT

2013-07-23 15:28:38

開發者Eclipse插件

2017-01-15 17:48:04

Java開發者編程語言

2016-12-26 17:53:05

Java開發者編程語言
點贊
收藏

51CTO技術棧公眾號

亚洲一二三四五| 国产精品无码永久免费888| 自拍偷拍亚洲综合| 97视频人免费观看| 亚洲欧美日韩不卡| 日韩欧美成人一区二区三区| 免费欧美网站| 中文字幕在线免费不卡| 国产成人免费91av在线| 亚洲欧美色图视频| 国产探花在线观看| 国产精品7m凸凹视频分类| 欧美日韩亚洲高清| 精品乱色一区二区中文字幕| 麻豆91精品91久久久| 日本国产亚洲| 欧美国产1区2区| 99r国产精品视频| 亚洲一级二级片| 成人av色网站| 国产精品污污网站在线观看| 高清免费日韩| 精品无码免费视频| 伊人久久亚洲| 亚洲一区二区三区美女| 99国产超薄丝袜足j在线观看| 国产成人亚洲精品自产在线| 91大神精品| 日本电影亚洲天堂一区| 日韩免费毛片| 中文字幕乱码人妻无码久久| 成人影院在线| 7799精品视频| 国产精品国三级国产av| 精品人妻少妇嫩草av无码专区| 希岛爱理一区二区三区| 91精品在线一区二区| 91看片就是不一样| 二区三区在线播放| 久久精品国产秦先生| 久久精品视频播放| 婷婷五月精品中文字幕| 丝袜诱惑一区二区| 欧美国产精品中文字幕| 久久久久久九九九九| wwwwww在线观看| 国产精品99久久精品| 国产一区二区免费| 亚洲欧美日韩一二三区| 任你弄在线视频免费观看| 高清在线观看日韩| 欧美又大又硬又粗bbbbb| xxxxx在线观看| 欧美aaa级| 亚洲综合在线免费观看| 久久久99国产精品免费| 色综合久久久久久| 三级精品在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 中文字幕久久久久久久| 国产精品yjizz视频网| 国产亚洲欧美色| 91免费高清视频| 国产成人免费观看视频 | 欧美日韩精品免费观看视一区二区| 91精品国产乱码在线观看| 亚洲黄色成人| 中文字幕亚洲综合| 人妻av一区二区| 91精品入口| 亚洲成人精品久久| 一区二区三区 欧美| 亚洲精品天堂| 国产欧美精品日韩区二区麻豆天美| 亚洲自拍偷拍在线| 色老头在线视频| 欧美xxx在线观看| 一区二区三区亚洲| 中文字幕在线永久| 国产一区二区三区免费在线| 大桥未久av一区二区三区| 干日本少妇首页| 色呦呦在线观看视频| 亚洲国产aⅴ成人精品无吗| 在线成人性视频| 欧美18xxxxx| 福利一区在线观看| 精品综合在线| 超碰在线影院| 久久伊人中文字幕| 国产精品久久国产精品| 91久久精品国产91性色69| 国产精品久久久久久久久久妞妞| 欧美成人精品h版在线观看| 蜜桃av乱码一区二区三区| 国产精品17p| 欧美电影免费提供在线观看| 亚洲va在线va天堂va偷拍| 在线男人天堂| 6080日韩午夜伦伦午夜伦| 亚洲免费观看在线| 国产亚洲第一伦理第一区| 日韩精品高清在线| 日本久久久久久久久久| 夜夜躁狠狠躁日日躁2021日韩| 精品国产在天天线2019| 日本www在线播放| 秋霞国产精品| 欧美亚洲免费在线一区| 国产xxxxx视频| 希岛爱理一区二区三区av高清| 午夜成人在线视频| 男女激情无遮挡| eeuss鲁一区二区三区| 亚洲最大的成人av| 五月天婷婷激情视频| av有声小说一区二区三区| 色综合天天综合色综合av| 六月激情综合网| 免费福利视频一区二区三区| 欧美特黄级在线| 欧美私人情侣网站| 一区二区三区在线免费看 | √新版天堂资源在线资源| 91免费视频观看| 欧美日韩中文国产一区发布| 午夜成年人在线免费视频| 欧美午夜视频网站| 无码人妻aⅴ一区二区三区| 欧美一区在线看| 成人国产精品久久久久久亚洲| 国产精品毛片一区视频播| 韩国成人精品a∨在线观看| 成人性生交xxxxx网站| 黄色大片在线免费观看| 国产精品青草综合久久久久99| 日韩免费毛片| 亚洲天堂导航| 日韩精品免费视频| 国产一卡二卡在线| 久久在线91| 国产精品永久在线| 国内老熟妇对白xxxxhd| 不卡一二三区首页| 日本一区二区在线| 国内外激情在线| 亚洲成人激情av| 潘金莲一级淫片aaaaa| 久久九九热re6这里有精品| 亚洲欧美日韩国产精品| 国产18无套直看片| 综合久久十次| 国产91精品视频在线观看| 黄色片一区二区| 国产日韩欧美精品在线| www.欧美日本| 欧洲激情视频| 欧美精品18videos性欧| 99精品人妻国产毛片| 精品一区二区av| 一区二区三区四区欧美| 123区在线| 亚洲国产欧美一区| 人妻互换一区二区激情偷拍| 极品av少妇一区二区| 国产精品扒开腿爽爽爽视频| va视频在线观看| 亚洲精品一二三| 妺妺窝人体色www在线观看| 国产剧情一区| 91精品久久久久| 男女污视频在线观看| 色综合久久久网| 女同久久另类69精品国产| 日韩午夜激情| 97视频资源在线观看| 风间由美一区| 91精品一区二区三区在线观看| 校园春色 亚洲| 免费成人美女在线观看.| 国产一区二区在线观看免费播放| 亚洲欧美视频一区二区| 亚洲成av人**亚洲成av**| 一区二区三区少妇| 日本人妖一区二区| 激情小说综合网| 天天免费亚洲黑人免费| 久久视频在线免费观看| 色综合视频在线| 欧美日韩国产成人在线免费| 亚洲精品成人无码熟妇在线| 黄色工厂这里只有精品| 成人h视频在线| bbw在线视频| 最近2019年好看中文字幕视频| 久久久久久少妇| 中文字幕第一区综合| www日本在线观看| 久久人人97超碰国产公开结果| 一区二区三区日韩视频| 青青视频一区二区| 91精品国产高清久久久久久91| 国产精品视频无码| 五月激情综合婷婷| 人妻 日韩 欧美 综合 制服| 日产国产欧美视频一区精品| 国产天堂视频在线观看| 亚洲一区二区三区四区电影| 国产精品va在线| 久久亚洲导航| 在线观看国产精品91| 少妇一级淫片免费看| 538prom精品视频线放| 国产污视频网站| 五月婷婷综合网| 激情五月婷婷在线| 国产精品久久久久久户外露出 | 久久精品一区四区| 黄在线观看网站| 欧美激情自拍| 国产一区二区不卡视频| 日本在线一区二区| 国产精品69av| 欧美天堂视频| 2020久久国产精品| 福利小视频在线| 欧美成人精品不卡视频在线观看| 思思99re6国产在线播放| 国产亚洲成精品久久| 日本一区高清| 欧美网站一区二区| 久久久久久久久久久久久av| 亚洲成人手机在线| 国产一级片视频| 久久亚洲精品小早川怜子| 成人性生活免费看| gogo大胆日本视频一区| 久久黄色免费看| 国产麻豆综合| 丝袜老师办公室里做好紧好爽| 亚洲麻豆一区| 国产青青在线视频| 国产欧美短视频| 精品欧美一区免费观看α√| re久久精品视频| 欧洲亚洲一区二区| 国产一区99| 亚洲国产精品一区在线观看不卡 | 娇小11一12╳yⅹ╳毛片| 欧美国产激情一区二区三区蜜月 | 亚洲美女在线国产| 懂色av懂色av粉嫩av| 99热精品一区二区| 亚洲色偷偷色噜噜狠狠99网| 成人国产精品免费观看| 天堂www中文在线资源| 97精品久久久久中文字幕 | 亚洲人成绝费网站色www| 亚洲影视一区二区| 亚洲444eee在线观看| 国内免费精品视频| 欧美视频中文在线看| 中国一级片黄色一级片黄| 欧美日韩黄色影视| 99在线无码精品入口| 精品毛片乱码1区2区3区| 手机av免费在线观看| 日韩乱码在线视频| 国产xxxxxx| 亚洲成人a**站| 九色在线免费| 久久久av网站| 丰乳肥臀在线| 国产成人精品久久二区二区91| 免费成人高清在线视频| 91视频最新| 欧美日日夜夜| 亚洲一区美女| 亚洲国产黄色| 国产成人av影视| 国产在线精品视频| 无码少妇一区二区三区芒果| 美腿丝袜在线亚洲一区| 熟妇无码乱子成人精品| 欧美a级理论片| 亚洲精品乱码久久久久久动漫| 懂色av一区二区三区蜜臀 | 中文字幕第15页| 亚洲综合激情另类小说区| 九九热在线视频播放| 欧美视频一区在线| 免费a级片在线观看| 日韩欧美精品在线| 午夜性色福利视频| 日韩成人av一区| 免费看美女视频在线网站| 曰本色欧美视频在线| 免费男女羞羞的视频网站在线观看| 欧美亚洲另类在线| 欧美三级一区| 日韩av免费电影| 狠狠干成人综合网| 欧美午夜aaaaaa免费视频| 亚洲专区一区| 成人毛片一区二区| 久久se这里有精品| 色一情一区二区三区| www.日韩在线| 在线观看黄网址| 色综合天天综合| 成人福利小视频| 色青青草原桃花久久综合| 绿色成人影院| 国产成人av在线播放| 亚洲图色一区二区三区| 亚洲欧美综合一区| 亚洲女优在线| 国产精品成人无码专区| 亚洲免费在线播放| 伊人成人在线观看| 亚洲女同性videos| 成人观看网址| 超碰97人人在线| 羞羞答答成人影院www| 国产 porn| 久久久久久一二三区| 日本在线视频免费观看| 日韩欧美在线1卡| 成人日批视频| 久久久免费在线观看| 亚洲优女在线| 黑人中文字幕一区二区三区| 亚洲av成人精品一区二区三区| 精品国产导航| 青青草综合视频| 欧美日韩老妇| 精品人妻一区二区三区四区在线| 国产成人aaa| 成人在线观看免费完整| 亚洲一区视频在线| 一区二区日韩视频| 日韩视频第一页| 欧美另类tv| 99精彩视频在线观看免费| 婷婷另类小说| 亚洲美女爱爱视频| 最新国产成人在线观看| 国产毛片在线视频| 亚洲成人免费在线视频| 激情av在线播放| 国产精品一区在线观看| 亚洲国产一区二区三区a毛片| 亚洲欧美日韩偷拍| 欧美日韩激情小视频| 天堂中文在线资| 北条麻妃久久精品| 97久久中文字幕| 麻豆传媒一区| 99久久综合狠狠综合久久aⅴ| 日本肉体xxxx裸体xxx免费| 国产女主播在线一区二区| 亚洲天堂网在线观看视频| 久久国产一区二区三区| 韩国一区二区三区视频| av日韩在线看| 久久精品噜噜噜成人av农村| 污污视频网站在线免费观看| 欧美军同video69gay| 黄色软件在线| 国产日韩av在线播放| 亚洲在线久久| 成人性生活免费看| 欧美主播一区二区三区美女| 狠狠躁日日躁夜夜躁av| 91豆花精品一区| 欧美日韩中字| 日韩精品视频网址| 亚洲成人一区二区| 国产女主播在线写真| 91在线|亚洲| 99精品视频免费| 亚洲精品自拍视频在线观看| 日韩一区二区麻豆国产| 免费在线观看黄| 高清不卡一区二区三区| 天堂久久一区二区三区| 天堂网中文在线观看| 欧美精品一区二区三区在线播放| 无人区在线高清完整免费版 一区二| 一区二区三区四区国产| gogogo免费视频观看亚洲一| 亚洲天堂自拍偷拍| 久久久久久中文| 人人狠狠综合久久亚洲婷| 99热这里只有精品2| 欧美网站在线观看| а√中文在线8| 欧美一区三区二区在线观看| 国产另类ts人妖一区二区| 天天色影综合网|