Composer 是 PHP 的 一個依賴管理工具。它容許你申明項目所依賴的代碼庫,它會在你的項目中爲你安裝他們。主要解決的問題:有很是多優秀的開源庫,直接使用能夠大大節約開發的 時間,可是在標準的庫裏面,又沒有這些功能,因而在運行他們對應的系統的時候,須要去下載相關的庫。(由於你須要跨平臺的移植性,因此就須要對所引用的庫 進行說明與管理)這樣就出現了composer。 php
composer的安裝: css
1.curl -sS https://getcomposer.org/installer | php laravel
下載Composer 的二進制文件,是一個 PHAR 包(PHP 的歸檔) 程序員
curl -sS(s是指靜默安裝,S是指出現錯誤就報錯)若是沒有這倆個參數,會顯示下載安裝進度 json
可是國內安裝composer的時候會常常失敗:(以下,受制於國內網絡的限制) 網絡
一個比較好的補充辦法: app
curl -sS http://install.phpcomposer.com/installer | php composer
這個是國內的版本。能夠看到很快就會下載好 dom
2.下載好了composer.phar以後,咱們沒法直接用composer命令,須要讓其在全局進行使用,須要將其移動到/usr/local/bin/ 文件目錄下面(而後咱們能夠本身作一個命名) curl
Mv composer.phar /usr/local/bin/composer
這樣咱們就能夠全局使用了(在命令行裏面輸入composer就能夠全局使用)
3.安裝完成以後:(須要不按期的進行更新依賴庫,才能拿到最新的依賴庫)
composer selfupdate
Composer的幾個相關概念:
1.phar包:Phar是PHP Archive縮寫,將php文件歸檔到一個文件包。將一個模塊的文件打包成一個phar,這樣方便模塊總體遷移,只需將phar文件移動過去,其餘環境中include便可使用。
2.查看composer包 會發現該phar包 的頭部是 #!/usr/bin/env php(該語句代表該命令是用環境裏的php進行運行)
3.使用對應項目的composer.json 很是簡單,在其對應的文件目錄下面,composer install
即完成了依賴庫的安裝。
Composer的寫法:(通常依賴庫的文件名叫composer.json)下面以Laravel最新版本的composer.json爲例子進行說明:
{
//包的名字
"name": "laravel/laravel",
//包的簡單描述
"description": "The Laravel Framework.",
//包的關鍵詞
"keywords": ["framework", "laravel"],
//許可證,確保其餘程序員在使用的時候,沒有法律上的問題
"license": "MIT",
//包的類型,默認爲 library。這裏是項目
"type": "project",
//須要的依賴條件
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.*"
},
//列出開發這個包(或跑測試等等)所依賴的包。在使用 install 命令時,只有帶上 「–dev」 參數才能安裝 dev 包。在使用 update 命令時,帶上 「–no-dev」 則不更新。
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*"
},
//提供給 PHP autoloader 的自動加載映射
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
//測試環境下的自動映射
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
//針對項目的一些配置。
"config": {
"preferred-install": "dist"
}
}