下面由composer教程欄目給大家介紹用composer管理相依性,希望對需要的朋友有所幫助!
composer原本是symfony這個php framework中,設(shè)計(jì)來管理套件相依性的工具,因?yàn)楹唵斡趾糜?,現(xiàn)在已經(jīng)成為一個獨(dú)立的開放原始碼計(jì)畫。許多framework以及程式庫,現(xiàn)在都可以使用composer來安裝管理。
其實(shí)在php上,很早就有這類的套件相依性管理工具,也就是pear。不過pear的設(shè)定過于繁復(fù),也很難針對個別專案設(shè)定各自的相依性,所以現(xiàn)在composer受到大眾的喜愛。
這個簡介只針對使用者,所以不會對于套件開發(fā)者需要知道的部份著墨。
* 安裝
如果是windows的使用者,只需要下載安裝檔并且執(zhí)行安裝:
https://getcomposer.org/composer-setup.exe如果要手動安裝,可以參考官網(wǎng)的指引:
http://getcomposer.org/doc/00-intro.md#installation-windows如果是unix like系統(tǒng)的使用者,可以透過這樣的指令來安裝:(需要先安裝curl)
curl -ss https://getcomposer.org/installer | php安裝程式會檢查php的設(shè)定,然后下載composer.phar到當(dāng)前的目錄。要執(zhí)行composer的話,可以執(zhí)行
php composer.phar或是干脆把它改成執(zhí)行檔
>mv composer.phar composer>chmod x composer然后執(zhí)行./composer。
不過如果再不同的工作目錄中都需要的話,而且執(zhí)行權(quán)限也沒問題,也可以直接把檔案復(fù)制到/usr/local/bin。
* 設(shè)定相依性
在專案中使用composer時,首先要產(chǎn)生一個composer.json檔,里面指定要使用的套件與版本。例如需要用phpmailer來寄信時,可以這樣指定:
{"require": {"phpmailer/phpmailer": "~5.2.7"}}然后執(zhí)行安裝:
eng-hsu-pingteki-macbook-air:2-1a fillano$ composer installloading composer repositories with package informationinstalling dependencies (including require-dev) - installing phpmailer/phpmailer (v5.2.7) downloading: 100% writing lock filegenerating autoload filesfeng-hsu-pingteki-macbook-air:2-1a fillano$這樣就安裝好了??匆豢吹降籽b了什么:
feng-hsu-pingteki-macbook-air:2-1a fillano$ ls -ltotal 16-rw-r--r-- 1 fillano staff 66 10 11 18:15 composer.json-rw-r--r-- 1 fillano staff 2330 10 11 18:16 composer.lockdrwxr-xr-x 5 fillano staff 170 10 11 18:16 vendor根據(jù)目錄中的檔案可以發(fā)現(xiàn),本來只有composer.json檔案,安裝之后多了一個composer.lock檔案以及vendor目錄。先看一下composer.lock的內(nèi)容:
feng-hsu-pingteki-macbook-air:2-1a fillano$ cat composer.lock{ "_readme": [ "this file locks the dependencies of your project to a known state", "read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" ], "hash": "065c23f92d5ae579cb91beff67f41196", "packages": [ { "name": "phpmailer/phpmailer", "version": "v5.2.7", "source": { "type": "git", "url": "https://github.com/phpmailer/phpmailer.git", "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpmailer/phpmailer/zipball/8717a79565b2c0ed67f851d70e1949febdf3b226", "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226", "shasum": "" }, "require": { "php": ">=5.0.0" }, "require-dev": { "phpdocumentor/phpdocumentor": "*", "phpunit/phpunit": "*" }, "type": "library", "autoload": { "classmap": [ "class.phpmailer.php", "class.pop3.php", "class.smtp.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "lgpl-2.1" ], "authors": [....下略看起來是剛剛安裝套件的資訊。
再看一下vendor目錄有什么東西:
feng-hsu-pingteki-macbook-air:2-1a fillano$ tree vendorvendor├── autoload.php├── composer│ ├── classloader.php│ ├── autoload_classmap.php│ ├── autoload_namespaces.php│ ├── autoload_real.php│ └── installed.json└── phpmailer └── phpmailer ├── license ├── phpmailerautoload.php ├── readme.md ├── changelog.md ├── class.phpmailer.php