> 本文主要是使用composer中的一些記錄
## 參考鏈接
中文文檔: http://www.phpcomposer.com/
## composer的原理步驟
1. 分析你的composer.json文件,找到所有需要安裝的第三方軟件的名稱和對應的版本號
2. 從本地緩存目錄和Packagist服務器獲取上述的第三方軟件的信息,包含最新版本,代碼存放地址等等
3. 分析依賴關系,根據包依賴、版本是否有更新等條件計算出最終需要安裝的第三方軟件的清單
4. 根據這份清單下載第三方軟件的源代碼,根據參數的不同,下載方式會是用Git Clone項目或者是直接下載Zip包
5. 將第三方軟件安裝到本地,一般是安裝在項目下的./vendor目錄,同時根據參數生成用于載入第三方軟件的autoload文件
## [安裝][1]
> 注意安裝完要執行composer self-update來檢查是否是最新的
## [配置中國鏡像][2]
```
composer config -g repo.packagist composer https://packagist.phpcomposer.com
```
## [composer.json](https://docs.phpcomposer.com/04-schema.html)
- [具體鍵名說明](http://docs.phpcomposer.com/04-schema.html#JSON-schema)
## [composer.lock - 鎖文件](http://docs.phpcomposer.com/01-basic-usage.html#composer.lock-The-Lock-File)
第一次 `composer install` 以后就會生成這個鎖文件,一旦有這個鎖文件以后的update就是根據這個鎖文件進行更新,如果composer.json 里面有了改變,哪怕一個小小的空格都會導致改變文件的md5sum。然后Composer就會警告你哈希值和composer.lock中記載的不同。
## [自動加載](http://docs.phpcomposer.com/01-basic-usage.html#Autoloading)
autoload提供了一些自動加載的方案,更改完該內容以后就composer update一下;
```
"autoload": {
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Tool/Tool.php" //files一般用來做函數庫加載的。
]
},
"autoload-dev": {
"classmap": [ # 直接 new \ClassName 來使用;
"tests/", # 如果此處是目錄,那此目錄下新增加了類文件,也要update一下,內部是循環加載進vendor/composer/autoload_classmap.php文件中;
"database/",
"SomeClass.php"
]
}
```
## 其他技巧
1\. 僅更新單個庫
```php
composer update foo/bar
```
2\. 如果composer.json僅僅是增加了點描述,這個時候我們可以執行 `update nothing` 來更新composer.lock。
3\. 不編輯composer.json的情況下安裝庫
```
composer require "foo/bar:1.0.0"
```
4\. 自動克隆倉庫,并檢出指定的版本
```
composer create-project doctrine/orm path 2.2.0
```
5\. 考慮緩存,dist包優先
6\. 考慮修改,源代碼優先
7\. `composer show -i` 查看當前已安裝的包列表及其各自的版本
## 其它參考
https://lvwenhan.com/tag/Composer/page/2
Composer 項目官方:http://getcomposer.org
Composer Github項目:https://github.com/composer/composer
[1]: https://pkg.phpcomposer.com/#how-to-install-composer
[2]: https://pkg.phpcomposer.com/
- 現代化PHP特性
- php7常用特性整理
- 反射機制Reflection
- 依賴注入與服務容器
- 抽象類與接口
- 類多繼承的替代方案Traits
- 類的延遲綁定(后期綁定)
- 生成器語法
- 匿名函數和閉包
- 匿名類
- 理解php的output buffer
- 斷言ASSERT
- 魔術方法小結
- Zend Opcache字節碼緩存
- 內置的http服務器
- SPL標準庫
- 【SPL標準庫專題(1)】SPL簡介
- 【SPL標準庫專題(2)】Iterator
- 【SPL標準庫專題(3)】Classes
- 【SPL標準庫專題(4)】Exceptions
- 【SPL標準庫專題(5)】Datastructures:SplDoublyLinkedList
- 【SPL標準庫專題(6)】Datastructures:SplStack & SplQueue
- 【SPL標準庫專題(7)】Datastructures:SplPriorityQueue
- 【SPL標準庫專題(8)】Datastructures:SplHeap & SplMaxHeap & SplMinHeap
- 【SPL標準庫專題(9)】Datastructures:SplFixedArray
- 【SPL標準庫專題(10)】Datastructures:SplObjectStorage
- PHPcomposer使用手札[ing]
- PHP中的多態
- 通過命名空間實現自動加載的框架雛形
- 日期與金額
- PHPstorm使用攻略
- 筆記本