3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
Composer 介紹 Composer 是一套 PHP 的套件管理工具,是一支 Phar 的執行程式(Phar 會將程式打包成一隻執行檔)。 特點 針對專案安裝 支援版本控制系統當下載來源,例如 git or svn 設定檔使用 JSON格式(composer.json) 自動處理母套件與子套件的相依性(不符合時就不安裝) 所有的 package 都是透過 composer.json 控制,使用 Composer 時通常由 root-package 統一管理。 安裝 因應版本不同,實際內容可以直接參考 官網 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" 安裝完以後的指令會是 composer.phar ,通常大家習慣用的還是 composer,因此在安裝時可以先透過指定好 filename 。 php composer-setup.php --filename=composer 基本操作 # init composer.json composer init # init 時順便加入套件(加入 -n 參數後,系統在 init 時不會有任何互動提問) composer init --require=foo/bar:1.0.0 -n # 加入新 vendor 進 composer.json,並且安裝 composer require "foo/bar:1.0.0" # 查看指令及選項 composer list # 升級Composer composer self-update # 更新套件 composer update # 更新特定套件 composer update foo/bar # 只更新lock檔 composer update --lock # 查看已安裝的套件 composer show -i Init 之後的 composer.json { "name": "johnsonlu/test", "description": "This is a Composer Test", "license": "proprietary", "authors": [ { "name": "JohnsonLu", "email": "johnson4932@gmail.com" } ], "require": { "php": ">=5.3.0" } } 基本設定說明: 名稱 功用 name 套件名稱,通常會是以 vendor/project 的方式命名。 minimum-stability 套件穩定度,分別有 stable、RC、beta、alpha、dev。 license 專案的 license,可以參考 SPDX 的 Identifier,私人專案可以使用 proprietary。 require 該專案要載入的套件 require-dev 該專案在載入的套件(開發模式) 專案應用 在專案中,套件管理都是透過專案根目錄的 composer.json 來控管,以裝 phpmailer 為例: { "require": { "phpmailer/phpmailer": ">=5.2.7" } "require-dev": { "phpunit/phpunit": ">=3.7.0" } } 版本選擇 版本的選擇方式有幾種: 1. 直接指定版號,例如 5.2.7 2. 使用 * 指定次版號,例如 5.2.* 表示版號大於等於 5.2.0,小於 5.3.0 的版本 3. 使用比較運算子,例如:>5.2、>=5.2、!=5.2、<=5.2、<5.2等 4. 使用 ~ 在版號前,表示下一個版號變動之前的版本。( ~1.2 等同於 >=1.2 和 <2.0.0) 5. 在版號之後,可以加上不同的 stability flag,例如 5.2.*@beta 安裝套件 Composer 預設安裝套件時,會去 packagist 搜尋,如果有想要 release 自己套件的記得上去註冊,這樣一來大家就可以自由使用你的套件了。 # 安裝 compoesr.json 中所有套件,包含 require-dev(test) composer install # 安裝 require(production) composer install --no-dev 安裝完畢後會出現 composer.lock 檔案與 vendor 資料夾。 名稱 功用 _composer.lock_ 紀錄載入套件的版本資訊 _vendor_ 存放載入套件的 source 及自動生成的 autoload.php 開發時只要載入 composer 建立出來的 autoload 程式即可使用。 require "vendor/autoload.php"; new PHPMailer; 安裝其他來源的套件 安裝不在套件庫私有的 git 套件(VCS來源:git、svn)時, composer.json 中需要從 repositories 定義位置,可以透過 dev-branch 選擇載入哪一個 branch。 { "require": { "johnsonlu/test": "dev-master" }, "repositories": [ { "type": "vcs", "url": "https://github.com/johnson4932/test" } ] } 另外,也可以直接用 dev-master#commit-hash 決定從哪一個 commit 開始載入。 Notice: 這裡有個前提,引用的套件必須有自己的 composer.json,這樣 composer 才有辦法辨別專案名稱。 利用 Autoload 載入內部元件 Composer 提供了 autoload 設定專案內部元件的載入,autoload 可以支援許多不同型態的載入方法。 Composer 會自動生成 vendor/autoload.php 載入外部套件,而外部套件的內部元件載入則是由該套件 compsoer.json 中的 autoload 決定。 Autoload 範例 { "autoload": { "psr-4": { "POD\\Metadata\\": "src/" }, "classmap": ["class.say.php"], "files": ["function.php"] } } 單獨更新 Autoload composer dump-autoload 安裝沒有 composer.json 的外部套件 如果需要安裝沒有使用 composer 的外部套件時,需要透過 package type 安裝,且須自行在 composer.json 設定載入路徑。 載入 zip 檔 { "repositories": [ { "type": "package", "package": { "name": "phpQuery/phpQuery", "version": "0.9.5", "dist": { "url": "https://github.com/TobiaszCudnik/phpquery/archive/master.zip", "type": "zip" }, "autoload": { "psr-0": {"phpQuery":"phpQuery/"} } } } ], "require": { "phpQuery/phpQuery": "0.9.*" } } 載入 source { "repositories": [ { "type": "package", "package": { "name": "JohnsonLu/xxaudio", "version": "master", "source": { "url": "git@git.johnsonlu.org:xxaudio", "type": "git", "reference": "master" }, "autoload": { "psr-0": { "XX_": "xxlibs-audio/" } } } } ], "require": { "JohnsonLu/xxaudio": "dev-master" } } 直接安裝專案 有些專案並非套件,且已經將 composer.json 的目錄結構定義好了,Composer 可以透過 create-project 建立並使用。( 例如 Laravel ) # --prefer-dist 等同加入 install 和 update composer create-project laravel/laravel path --prefer-dist Categories: PHP Tags: ComposerPHP 分類 Android AngularJS Chrome Database MySQL DataStructure Editor Vim Firefox Git Hadoop Language Go Java JavaScript jQuery jQueryChart Node.js Vue PHP Laravel ZendFramework Python Mac Network Cisco DLink Juniper Oauth Server Apache Share Unix FreeBSD Linux WebDesign Bootstrap CSS HTML Wordpress Search 搜尋:

本文由blogjohnsonluorg提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦