精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国精品人妻无码一区二区三区喝尿| 国产一区二区三区四区五区六区 | 欧美家庭影院| 风流少妇一区二区| 午夜精品久久久久久99热软件| 95视频在线观看| 欧美专区福利免费| 日韩久久一区二区| 国产高清精品一区二区三区| 成人免费毛片男人用品| 91视频综合| 精品久久一二三区| caoporn超碰97| caoporm免费视频在线| jlzzjlzz亚洲日本少妇| 国产精品国产福利国产秒拍| 日韩va亚洲va欧美va清高| 九色丨蝌蚪丨成人| 欧美日韩午夜精品| 亚洲不卡中文字幕无码| 日韩精品电影网| 中文字幕视频三区| 多野结衣av一区| 国产精品美女久久久久aⅴ| 福利视频久久| 91tv国产成人福利| 午夜在线播放视频欧美| 萌白酱国产一区二区| 日韩中文字幕电影| 嗯用力啊快一点好舒服小柔久久| 欧美色视频日本高清在线观看| 国产高潮呻吟久久久| 黄上黄在线观看| 粉嫩aⅴ一区二区三区四区| 国产精品嫩草影院一区二区| 日韩欧美亚洲视频| 欧美日本精品| 日韩资源在线观看| 全黄一级裸体片| 国产精品久久久久av蜜臀| 欧美电影在线免费观看| 妞干网在线免费视频| 51漫画成人app入口| 亚洲色图视频网站| 亚洲日本理论电影| 国产午夜视频在线观看| 久久伊人蜜桃av一区二区| 国产伦精品一区二区三区照片 | 亚洲综合国产| 久久久噜噜噜久久中文字免| 91porn在线视频| 91麻豆精品国产91久久久平台| 亚洲天堂男人天堂| 日本xxxxxxxxx18| 香蕉久久精品| 亚洲精品综合精品自拍| 在线观看国产三级| 欧美一级二级三级视频| 亚洲精品ady| 朝桐光av一区二区三区| 欧美亚洲国产日韩| 亚洲精品之草原avav久久| 一起草在线视频| 女同另类激情重口| 亚洲欧美激情在线视频| 国产高潮呻吟久久| 成人影院在线| 久久久精品一区二区| 欧美成人777| 自拍偷拍欧美专区| 欧美情侣性视频| 久操免费在线视频| 一本色道久久精品| 欧洲成人免费视频| 欧美性受xxx黑人xyx性爽| 日韩av中文在线观看| 国产精品偷伦视频免费观看国产| 亚洲综合视频在线播放| 国产一区二区女| 好吊色欧美一区二区三区视频| 午夜性色福利视频| 国产欧美一区二区在线| 在线观看一区二区三区三州 | 中文字幕免费在线观看视频一区| 一区二区欧美日韩| 青草av在线| 午夜精品123| 日韩一级免费在线观看| a一区二区三区亚洲| 精品sm捆绑视频| 日本少妇高潮喷水xxxxxxx| 日韩欧美午夜| 欧美国产日韩一区二区| 国产精品人人人人| 捆绑调教一区二区三区| 亚洲一区美女视频在线观看免费| 男人天堂一区二区| 国产精品毛片久久久久久| 超碰97在线看| 在线高清av| 3d成人动漫网站| 黄色网址在线视频| 欧美顶级大胆免费视频| 久久久久久久国产精品视频| 中文字幕免费观看| 高清久久久久久| 西游记1978| 波多野结衣久久| 欧美日韩亚洲综合在线| av av在线| 色999日韩| 91av福利视频| 国产又粗又猛又色又| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲制服丝袜在线播放| 成人直播大秀| 97超级碰碰人国产在线观看| 中文字幕在线播放不卡| 不卡高清视频专区| 自拍另类欧美| 美女日韩欧美| 亚洲精品一区二区三区香蕉| 国产探花视频在线| 国产精品视区| av一本久道久久波多野结衣| av播放在线| 色综合天天综合| 国产精品久久久久久亚洲av| 91亚洲成人| 国产精品日日摸夜夜添夜夜av| 性xxxx视频播放免费| 亚洲另类在线制服丝袜| 超碰在线公开97| 美女精品一区最新中文字幕一区二区三区 | 欧美亚洲综合视频| 精品视频在线播放免| 久久久久黄色片| 国模大尺度一区二区三区| 日韩精品久久久| 成人av三级| 日韩电影第一页| 日韩aaaaaa| 成人的网站免费观看| av一区二区三区免费观看| 日本成人一区二区| 中文字幕欧美国内| 国模私拍一区二区| 国产欧美日韩在线视频| 欧美少妇性生活视频| 四虎5151久久欧美毛片| 97超碰色婷婷| 污视频在线免费| 黄色成人在线免费| 亚洲精品乱码久久久久久久| 亚洲日产国产精品| 精品卡一卡二| 在线观看特色大片免费视频| 精品视频久久久久久| 五月天婷婷导航| 国产欧美日韩综合精品一区二区| 国产精品视频分类| 91影院成人| 亚洲自拍偷拍在线| 美女91在线| 日韩精品极品视频| 无码日韩精品一区二区| 国产亚洲欧美日韩在线一区| 黄色免费网址大全| 色综合色综合| 亚洲一区二区中文| 17videosex性欧美| 亚洲欧洲一区二区三区在线观看 | 欧美一级片黄色| 国产日韩欧美一区二区三区在线观看| 国产一区二区无遮挡| 在线中文字幕播放| 中文字幕av一区二区三区谷原希美| 丰满人妻一区二区三区四区| 亚洲欧美乱综合| 国产a级黄色片| 三级不卡在线观看| 婷婷视频在线播放| 久久久久久久久久久久久久久久久久久久| 欧美一二三视频| 97视频在线观看网站| 日韩一区二区影院| www.国产com| 亚洲欧美综合在线精品| 精品1卡二卡三卡四卡老狼| 久久婷婷麻豆| 一本久道久久综合狠狠爱亚洲精品 | 亚洲视频一二三| 一本色道久久hezyo无码| 丝瓜av网站精品一区二区| 中文精品视频一区二区在线观看| 国产乱人伦丫前精品视频| 国产精品久久久久久久久久| 神马午夜伦理不卡 | 亚洲国产精品久久久久蝴蝶传媒| 国产精品免费观看高清| 色豆豆成人网| 欧美福利在线观看| shkd中文字幕久久在线观看| 精品成人免费观看| 亚洲天堂avav| 欧美日韩国产综合视频在线观看中文| 美女福利视频网| 99精品1区2区| 婷婷激情综合五月天| 久久成人在线| 奇米777四色影视在线看| 国产伦一区二区三区| 国产高清精品一区二区| 97精品资源在线观看| 国产91在线视频| 丰乳肥臀在线| 精品国产一区二区三区久久狼黑人 | 久久高清一区| 日韩激情视频一区二区| 999国产精品视频| 欧美日韩精品免费观看视一区二区| 国产一区一区| 国产精品久久久久久久一区探花| 黄色的视频在线观看| 久久精品一区中文字幕| 国际av在线| 日韩精品高清在线| 人妻91麻豆一区二区三区| 91精品国产综合久久精品app| 国产suv精品一区二区33| 午夜在线电影亚洲一区| 欧美激情国产精品免费| 1000部国产精品成人观看| 欧美人与性囗牲恔配| 久久奇米777| 2一3sex性hd| 国产不卡视频一区二区三区| 国产精品视频分类| 日本女优在线视频一区二区| 久久久久久久久久久久久国产精品 | 国产精品区一区二区三在线播放| 91精品一久久香蕉国产线看观看| 国产精品黄视频| 深夜成人福利| 日韩美女在线播放| 免费成人美女女| 日本午夜在线亚洲.国产| 在线免费看h| 欧美亚洲国产日韩2020| 色戒汤唯在线观看| 7777精品视频| 竹内纱里奈兽皇系列在线观看| 国内精品一区二区三区四区| 成人性生交大片免费看在线播放| 欧美贵妇videos办公室| 欧美精品videosex| 91精品成人久久| 竹内纱里奈兽皇系列在线观看| 欧美中文在线观看| 日韩av超清在线观看| 国产精品青草久久久久福利99| 本网站久久精品| 成人疯狂猛交xxx| 国产日韩欧美中文在线| 99热99热| 免费观看成人www动漫视频| 久久久久久久久久久久久9999| 伊人春色之综合网| 亚洲欧洲精品一区二区| 97精品国产福利一区二区三区| 五月天色婷婷综合| 亚洲视频久久| 日本精品一区在线观看| 全部av―极品视觉盛宴亚洲| 亚洲欧洲日本精品| 国产精品一区二区三区乱码| 性活交片大全免费看| 91视频免费看| 亚洲女人毛茸茸高潮| 亚洲欧美一区二区三区国产精品| 久久久久成人片免费观看蜜芽| 欧美日韩国产精品| 中文在线最新版天堂| 欧美一区二区三区四区久久 | 亚洲欧美日韩精品久久亚洲区 | 欧美性猛交bbbbb精品| 欧美日韩综合色| 成人激情四射网| 日韩精品在线影院| 久草中文在线| 51精品国产黑色丝袜高跟鞋| 国产成人福利夜色影视| 岛国视频一区| av一区二区在线观看| 国产成人一二三区| 久久激情综合| 午夜福利123| 久久午夜电影网| 538任你躁在线精品视频网站| 粉嫩av一区二区三区免费野| 97超视频在线观看| 日韩精品欧美激情| bt在线麻豆视频| 日韩av免费在线看| 天堂精品在线视频| 三区精品视频观看| 亚洲国产高清视频| 在线免费黄色网| 久久久蜜臀国产一区二区| 欧美三级小视频| 欧美系列亚洲系列| 日韩一级片免费看| 久青草国产97香蕉在线视频| 三级成人黄色影院| 国产传媒欧美日韩| 欧美第一精品| av五月天在线| 91小视频免费观看| 午夜写真片福利电影网| 欧美色手机在线观看| 天堂成人在线| 欧美激情亚洲另类| 91精品福利观看| 日韩色妇久久av| 免费在线成人| 老熟妇精品一区二区三区| 亚洲激情六月丁香| 国产精品九九九九| 在线视频欧美日韩| 日韩成人动漫| 狼狼综合久久久久综合网| 激情欧美一区二区三区| 亚洲精品免费一区亚洲精品免费精品一区 | av手机天堂网| 亚洲精品美女在线观看| 久久香蕉一区| 91日韩久久| 亚洲女同中文字幕| 三区视频在线观看| 国产精品伦理一区二区| 一区二区乱子伦在线播放| 国产亚洲激情视频在线| 345成人影院| 麻豆成人av| 亚洲一区二区三区四区五区午夜 | 久久久久久久久艹| 91精品国产一区二区人妖| 在线免费观看黄色网址| 国产精品久久久久av| 国产99久久| www.亚洲天堂网| 91论坛在线播放| 日韩欧美高清在线观看| 日韩av影片在线观看| 神马久久午夜| 欧美日韩电影一区二区三区| 国产精品入口66mio| 中文字幕人妻一区二区| 色欧美日韩亚洲| 福利视频在线播放| 91精品久久久久久久久中文字幕 | 亚洲最新av在线网站| 3d欧美精品动漫xxxx无尽| 欧美精品一区二区视频 | 久久久久xxxx| 亚洲欧美精品午睡沙发| 午夜久久久久久噜噜噜噜| 欧美精品999| 欧洲亚洲成人| 欧美午夜性生活| 中文字幕在线不卡一区| av中文在线观看| 午夜精品久久久久久久99黑人 | 一区二区三区在线视频看| 久久爱www久久做| 欧美 日韩 国产 一区二区三区| 日韩精品中午字幕| 亚洲涩涩在线| 亚洲国产一区二区三区在线| 国产综合色视频| 亚洲天堂日韩av| 在线亚洲国产精品网| 91综合精品国产丝袜长腿久久| 丰满爆乳一区二区三区| 国产日韩欧美精品综合| 国产偷拍一区二区| 91av在线网站| 99热精品久久| 91黄色免费视频| 精品视频在线视频| 成人福利影视| 亚洲成人一区二区三区| 国产成人午夜99999| 秋霞av一区二区三区| 久久av资源网站| 蜜臀91精品国产高清在线观看| 亚洲午夜精品一区| 欧美视频第一页| a免费在线观看| 欧美亚洲免费高清在线观看|