PHP是一款我自己覺得寫起來不會太難的一個程式語言,而且PHP也還蠻自由的,只要我們以「<?php」為開頭,我們就能夠開始編寫我們的網站,但是也是因為太過自由,因此導致大家寫的程式,可說是各立山頭(以前的情況),想是我自己以前寫過的程式,到了現在幾乎是直接放棄了,至於所引用的套件,可能因為引用的地方太多,所以造成套件很難升級,也因此,php就開始有了各式各樣的規範,以及套件管理器,changken最近也發現官方也有出一個自己的套件管理,它好像叫做pecl、pear(沒用過)。
資訊:
- 軟體名稱:composer
- 網站:https://getcomposer.org/
- 下載:https://getcomposer.org/download/
- windows、linux、Mac適用
- php 5.3.2以上(我個人則是建議各位最好直接用7+)
- 最新版本: v1.8.0
教學:
如果你是使用windows的話,請直接使用composer-setup.exe來安裝。
如果你是linux及mac的話,則請下載官網提供的installer或composer.phar來使用。
常用指令:
1.
composer install
這個指令主要是在你的專案還沒有安裝好時才能使用的,它會幫助你下載在composer.json所的定義好的套件及其版本,但如果你的專案已經有了composer.lock的話,那專案套件的版本則是會直接參考composer.lock,如果你把composer.lock加到版控中的話,優點是下一位使用者重新安裝之後,它會得到跟你一模一樣的環境,缺點是所安裝套件的版本可能不會是最新的。
2.
composer update
它可以幫助你更新你的套件,當你的套件安裝好了之後,可能套件的作者又發行了新的一版,屆時你就可以使用這一道指令來更新你的套件。
3.
composer dump-autoload
或
composer dumpautoload
這個指令能夠幫助你重新產生有關autoload的檔案,如果你有修改composer.json的autoload(或autoload-dev)部分的話,那你一定要再執行一次這個指令。
4.
composer require vendor_name/package_name
或
{
"require": {
"vendor_name/package_name" : "version"
}
}
composer update
至於安裝套件的話,你可以使用composer require這個命令或者是先修改composer.json的require的部分,再下composer update。
5.
composer remove vendor_name/package_name
或先刪除在composer.json中的套件紀錄,再執行:
composer update
有時候你不在需要特定套件,你只需要下這個命令,它就可以幫助您移除專案的相依套件唷~
6.
composer global [install|remove|require|update]
除了各個專案以外,其實composer自己也有著全域的套件管理,一般來說會在這邊安裝的套件大多會是以工具為主,像是phpunit、laravel、phalcon等cli工具,並且請注意像是在winodws系統之下,此路徑會是: C:\Users\使用者\AppData\Roaming\Composer、而linux系列系統則會是在/home/使用者/.composer之下,不過在它們底下都會有vendor/bin的目錄,也因此在使用cli工具之前請記得將它加入path之中!
7.
composer init
如果你想要寫一個新的專案的話,那你一定要下這個指令,因為它可以幫助你初始化你的composer.json檔,像是專案的基本名稱以及相依套件,還有自動引入的檔案!
8.
Autoloading
這是最為重要的觀念,因為php不像java、c#有著import和package的觀念,不過後來有一群人就一起制定了相關規則像是psr(php standard recommandations)等規格,它可以幫助你更有結構地開發你的php程式,但是你也可以選擇不要遵守這些規定。
a.psr-0(廢棄): 過時的東西,不要用,這是在php5.3的namespace還沒有出來的產物。
b.psr-4:
這是遵照psr-4規範的自動引入的方式。
VendorName\SubVendorName\...\ClassName
像是由Changken\開始的命名空間,autoloader就會從src/Changken這個目錄之下來參考路徑,有點類似namespace轉換成為實體路徑的概念,changken我會建議大家去使用它。
{
"autoload": {
"psr-4":{
"Changken\\": "src/Changken/"
}
}
}
c.classmap:
這個主要會是自動引入在像是src的目錄底下的class,請注意!class名稱要跟檔名一樣唷~
當然!你也可以只引入單一檔案,比如你的檔案有定義一大堆class,autoloader就會自動去你所定義的單檔來找class,但changken我自己是不太會去用這個功能啦~
{
"autoload": {
"classmap" : [
"src/",
"lib/",
"some.php"
]
}
}
d.files
你如果不想要定義類別,而是只想要引入一個檔案的話,那你就可以使用這個功能了!
{
"autoload" : {
"files" : [
"src/helpers/test.php"
]
}
}
結語
composer好用是好用啦,但是作為一般的開發者的我們則必須要有先備知識,知道php的痛點在於哪裡,所以我們才會因此感同身受了解原生的php是哪邊不太完美,也因此使得我們不會盲目地使用composer而不知道為什麼要使用它。
近期留言