Composer使用要點(diǎn)

composer原理

composer主要基于spl_autoload_register呛占。
在執(zhí)行了“composer install”后敢朱,composer先將在https://packagist.org/上依賴的包下載到vendor目錄中功舀,然后將所有依賴包的枚舉寫到vendor/composer/autoload_static.php中殖属,再通過spl_autoload_register注冊(cè)到SPL __autoload函數(shù)棧中即可颁糟。

composer.json添加模塊

我們需要在 composer.json 文件中指定 require key 的值,以明確你的項(xiàng)目需要依賴哪些包铺董。

  • composer.json的最小demo
{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}
  • 示例工程


  • 加入對(duì)本工程其他目錄下所有class的依賴
    對(duì)ezSQL的依賴,則需要添加如下:
  "name": "marsthink",
  "description": "PHP class to make interacting with a database ridiculusly easy.",
  "license": "LGPL",
  "authors": [
{
      "name": "Jamal Jo",
      "email": "woshizmxin@163.com"
    }
  ],
  "autoload": {
    "classmap": [
      "ezSQL/"
    ]
  }
}

  • 加入對(duì)https://packagist.org/ 上的包的依賴
    對(duì)monolog和jpush的依賴,修改如下:
{
  "name": "marsthink",
  "description": "PHP class to make interacting with a database ridiculusly easy.",
  "license": "LGPL",
  "authors": [
    {
      "name": "Jamal Jo",
      "email": "woshizmxin@163.com"
    }
  ],
  "require": {
    "monolog/monolog": "1.0.*",
    "jpush/jpush": "v3.5.*"
  },
  "autoload": {
    "classmap": [
      "ezSQL/"
    ]
  }
}

引用composer.json的庫

根據(jù)composer.json精续,Composer 生成了一個(gè) vendor/autoload.php 文件坝锰。你可以簡單的引入這個(gè)文件:

require 'vendor/autoload.php';

這使得你可以很容易的使用第三方代碼。例如:如果你的項(xiàng)目依賴 monolog重付,你就可以像這樣開始使用這個(gè)類庫顷级,并且他們將被自動(dòng)加載。

// index.php
require 'vendor/autoload.php';

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

composer.lock - 鎖文件

請(qǐng)?zhí)峤荒銘?yīng)用程序的 composer.lock (包括 composer.json)到你的版本庫中

在安裝依賴后确垫,Composer 將把安裝時(shí)確切的版本號(hào)列表寫入 composer.lock 文件弓颈。這將鎖定改項(xiàng)目的特定版本。install 命令將會(huì)檢查鎖文件是否存在删掀,如果存在翔冀,它將下載指定的版本(忽略 composer.json 文件中的定義)。如果不存在披泪,Composer 將讀取 composer.json 并創(chuàng)建鎖文件纤子。

這意味著,任何人建立項(xiàng)目都將下載與指定版本完全相同的依賴款票。你的持續(xù)集成服務(wù)器控硼、生產(chǎn)環(huán)境、你團(tuán)隊(duì)中的其他開發(fā)人員艾少、每件事卡乾、每個(gè)人都使用相同的依賴,從而減輕潛在的錯(cuò)誤對(duì)部署的影響缚够。即使你獨(dú)自開發(fā)項(xiàng)目幔妨,在六個(gè)月內(nèi)重新安裝項(xiàng)目時(shí),你也可以放心的繼續(xù)工作潮瓶,即使從那時(shí)起你的依賴已經(jīng)發(fā)布了許多新的版本陶冷。

修改鏡像源

運(yùn)行composer install時(shí),有時(shí)候卡在Loading composer repositories with package information毯辅,此時(shí)需要更換鏡像源頭埂伦,方法如下:

  1. 方法一:修改 composer 的全局配置文件(推薦方式)
    打開命令行窗口(windows用戶)或控制臺(tái)(Linux、Mac 用戶)并執(zhí)行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
  1. 方法二:修改當(dāng)前項(xiàng)目的 composer.json
    配置文件:
    打開命令行窗口(windows用戶)或控制臺(tái)(Linux思恐、Mac 用戶)沾谜,進(jìn)入你的項(xiàng)目的根目錄(也就是 composer.json文件所在目錄),執(zhí)行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令將會(huì)在當(dāng)前項(xiàng)目中的 composer.json文件的末尾自動(dòng)添加鏡像的配置信息(你也可以自己手工添加)

注意:

  • 根據(jù)經(jīng)驗(yàn)胀莹,每次部署代碼時(shí)基跑,由于工程內(nèi)的依賴關(guān)系變化,建議先刪除composer.lock描焰,再運(yùn)行composer install媳否。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栅螟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子篱竭,更是在濱河造成了極大的恐慌力图,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掺逼,死亡現(xiàn)場離奇詭異吃媒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吕喘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門赘那,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氯质,你說我怎么就攤上這事募舟。” “怎么了病梢?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵胃珍,是天一觀的道長。 經(jīng)常有香客問我蜓陌,道長觅彰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任钮热,我火速辦了婚禮填抬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隧期。我一直安慰自己飒责,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布仆潮。 她就那樣靜靜地躺著宏蛉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪性置。 梳的紋絲不亂的頭發(fā)上拾并,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音鹏浅,去河邊找鬼嗅义。 笑死,一個(gè)胖子當(dāng)著我的面吹牛隐砸,可吹牛的內(nèi)容都是我干的之碗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼季希,長吁一口氣:“原來是場噩夢啊……” “哼褪那!你這毒婦竟也來了幽纷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤博敬,失蹤者是張志新(化名)和其女友劉穎霹崎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冶忱,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年境析,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囚枪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劳淆,死狀恐怖链沼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沛鸵,我是刑警寧澤括勺,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站曲掰,受9級(jí)特大地震影響疾捍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栏妖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一乱豆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吊趾,春花似錦宛裕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至屁奏,卻和暖如春岩榆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背了袁。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工朗恳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人载绿。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓粥诫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親崭庸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怀浆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容