--- tags: 學習筆記, PHP --- Composer 介紹與使用 === 什麼是 Composer? --- <center> <img style="box-shadow: 0px 0px 5px 2px #cccccc;" src="https://i.imgur.com/nHqr8I5.jpg"> </center> <br> Composer 是 PHP 用來管理套件的工具,是現代 PHPer 必備的武器之一。 為什麼我們需要 Composer? --- 在沒有使用 Composer 的情況下,每使用一個套件就必須 include 一次,套件又可能相依其他套件,於是我們又要再 include 那個套件。 若是自己開發的小專案還沒關係,要是專案一大起來,可能會有兩種情況,一種是不同的情況需要不同的套件,於是 include 就散落在各個檔案中,難以管理;另一種就是在程式進入點一次 include 一大堆,include 相連到天邊。 <center> <img style="box-shadow: 0px 0px 5px 2px #cccccc;" src="https://i.imgur.com/hS0gMsy.jpg"> <br> <div style="display: inline-block; color: #999;padding: 5px; text-decoration:line-through;">多起來比你女友的衣櫃還誇張</div> </center> <br> 但有了 Composer 之後,我們只需要一行 ```php require 'vendor/autoload.php'; ``` 怎麼樣?是不是有種把衣櫃整理乾淨的爽感?這就是我們使用 Composer 的原因。 怎麼開始? --- ### if (your_system == "windows") [照著這份文件做](https://getcomposer.org/doc/00-intro.md#installation-windows),下載 Composer-Setup.exe 後執行,他會下載最新版的 Composer 並修改你的 PATH 環境變數,但要記得重新啟動 terminal ,才會重新 load PATH。 --- ### if (your_system == "Linux / Unix / macOS") [照著這份文件做](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos)。 >分為 Locally 和 Globally,下載方式大同小異,差別在於把 Composer 放在專案內 (Locally) 或是全局可訪問 (Globally),[這裡有一些討論](https://stackoverflow.com/questions/35405851/composer-installation-global-vs-local)。 首先請務必從 [Composer 正式的官網](https://getcomposer.org/download/)下載,依據執行下面四行指令: ```bash= php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" ``` 分別做的事情為 1. 下載 composer-setup.php 安裝程式 2. 對下載的檔案做檢查,確保來源正確 3. 執行 composer-setup.php 開始安裝 4. 安裝完成後刪除 composer-setup.php --- 按照上面的方法安裝完後,你會發現你的目錄中多了一個 composer.phar 檔案,執行 ```php composer.phar``` ,出現 Composer 圖案就代表成功了。  想要 Globally 使用 Composer ,還需要把你的 composer.phar 移動到 /usr/local/bin 中,並確定自己有把 /usr/local/bin 加入 $PATH 參數中 ```bash= mv composer.phar /usr/local/bin/composer ``` 直接執行 ```composer``` ,如果看到一樣的 Composer 圖案就代表成功了。 如何使用? --- ### 初始化 ``` composer -t ``` 可以看到當前 Composer 的版本號。 切換到專案目錄執行 ``` composer init ``` 一陣問答之後會幫你產生一個 composer.json ,裡面會有 Composer 相關的設定,包含使用的套件以及版本等。 ### 安裝套件 接著假設你想安裝的是 [phpUnit](https://phpunit.de/index.html),按照官方文件執行 ``` composer require --dev phpunit/phpunit ^9.1 ``` ```composer require``` 這個指令會安裝你指定的套件,並新增一個 composer.lock (如果沒有的話),然後把這個套件的資訊記錄在 composer.lock 和 composer.json 中。 --dev 的意思則是相關設定會寫在 composer.json 和 composer.lock 的 require-dev 中,這樣的區分是因為有些套件只需要在測試環境中執行 (development or testing),在正式環境中並不需要 (production),在正式環境中只需要執行 ```composer install --no-dev``` 就可以排除掉 require-dev 中的套件 ([詳見此](https://stackoverflow.com/questions/19117871/what-is-the-difference-between-require-and-require-dev-sections-in-composer-json))。 最後的 ^9.1 則代表版本。 ### composer install ```composer install``` 指令會去找專案內的 composer.lock,並按照裡面記錄的套件和版號安裝。如果找不到 composer.lock ,就會按照 composer.json 的紀錄安裝,並產生一個 composer.lock。 ### composer update ```composer update``` 則會根據 composer.json 中指定的版本下載。 也就是說,如果有 composer.lock,就乖乖用 ```composer install``` 來確保自己的套件版本與原開發者是一模一樣的。若是用 ```composer update``` 的話,就有套件的版本可能不同導致的不相容問題。另外,在沒有 composer.lock 的情況下, ```composer install``` 和 ```composer update``` 做的事情是一樣的 (讀取 composer.json 並安裝套件)。 以上就是基本的 Composer 使用方式,想了解更多請至參考資料。 參考資料 --- 1. https://getcomposer.org/ 2. http://blog.tonycube.com/2016/12/composer-php.html 3. https://medium.com/@shengyou/php-%E4%B9%9F%E6%9C%89-day-28-composer-%E5%BE%9E%E5%85%A5%E9%96%80%E5%88%B0%E5%AF%A6%E6%88%B0-4d3b34a91946
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up