php手擼輕量級開發(三)composer小白入門

composer介紹

composer是php的一個依賴管理工具,在項目中聲明所依賴的外部工具庫,會自動安裝這些工具庫及所依賴的庫文件。
對我等初階工程獅來講,就是拉別人的代碼,用別人的庫,一個進階版的cp命令 <( ̄︶ ̄)>php

安裝流程

curl -sS https://getcomposer.org/installer | php

而後當前文件夾下應該會有一個composer.phar文件,而後把它放到全局路徑裏或者在PATH里加入它的位置html

mv composer.phar /usr/local/bin/composer

windows用戶添加到環境變量裏的PATH中
不會的這裏有百度經驗 https://jingyan.baidu.com/article/8ebacdf02d3c2949f65cd5d0.htmlgit

運行命令看看安裝成功沒有github

composer --versio
//輸出: Composer version 1.5.6 2017-12-18 12:09:18
//輸出這種樣子的就是成功了

也能夠看個圖,直接運行 composer命令:thinkphp

composer

image

介紹下composer.json文件

{
  "name": "HiPHP",
  "description": "hi world",
  "type": "Framework",
  "keywords": [
    "PHP",
    "PHP FRAMEWORK"
  ],
  "require": {
    "php": ">5.3.0",
    "catfan/Medoo": "*",
    "monolog/monolog": "1.2.*"
  },
  "repositories": {
    "packagist": {
      "type": "composer",
      "url": "https://packagist.phpcomposer.com"
    }
  }
}
  1. 這部分是一些本身項目的介紹,名稱描述類型關鍵字
  2. 加載的第三方庫,包括第三方庫的版本
  3. 國內的鏡像服務,因爲衆所周知的緣由,使用國外的會很慢很卡,具體方法查看composer國內鏡像的官網介紹。 https://pkg.phpcomposer.com/json

    引入一個新的包

    搞個例子,咱們還缺乏一個正式的日誌功能,php有個很牛x的開源日誌庫,咱們這就使用composer把他加載進來。(開源就是光明正大讓你copy過來的寫好了的代碼,然而cp太麻煩,因而大佬們就發明了composer一次行復制過來)。windows

    這是github地址
    https://github.com/Seldaek/monologcomposer

這是是咱們以前 composer.json 文件中requeire部分curl

"require": {
    "php": ">5.3.0",
    "catfan/Medoo": "*"
  },

如今加上monolog的部分thinkphp5

"require": {
    "php": ">5.3.0",
    "catfan/Medoo": "*",
    "monolog/monolog": "1.2.*"
  },

而後咱們執行 composer update

image
打印出來的數據沒問題,咱們去看看vender裏的文件,多了這麼一個monolog的文件夾。

image

如今咱們在代碼裏測試一下,這是修改以後的testCtrl控制器

namespace controller;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

class testCtrl
{
    public function index()
    {
        $log = new Logger('name');
        $log->pushHandler(new StreamHandler('my.log', Logger::WARNING));
        $log->warn('warn警告');
        $log->err('err錯誤');
    }
}

運行以後根目錄下多出來一個文件,my.log,打開裏邊有這樣的內容。
image

另外一種加載第三方庫的方式

還能夠直接跑命令composer require
好比咱們仍是添加這個monolog庫,把咱們剛纔修改的composer.json文件裏的引入monolog的這一行刪除掉,而後運行 composer update,會發現剛纔自動下載的monolog文件夾消失了,回到了最初的狀態。
而後咱們運行

composer require monolog/monolog

看輸出:
image
看看composer.json文件,發現已經多出了一行

"monolog/monolog": "^1.24"

版本詳細到了1.24,比咱們最開始指定的要詳細一些,文件夾也出來了,代碼也能夠正常調用。

關於composer.lock

看一下咱們的composer.lock,這是個運行了composer install或者update以後就存在的文件。
composer.json是用來配置咱們要引入的庫,那這個composer.lock是用來幹嗎的呢?答案是,用來精確指定版本。
好比咱們一開始手動添加版本的時候,添加的是1.2.*,這樣咱們在拉取的時候,可能會拉去1.2.1或者1.2.4,但加入他官方的版本升級了,以後使用這個項目的人,install的時候拉去的可能就是1.2.5了,說不定有一些不兼容的問題。因而compsoer便設計了一個lock文件,lock文件裏會有完整的包信息和版本號。
關於compser.lock的具體情景:

  1. composer install 的時候會首先檢查lock文件是否存在,若是存在,就按照composer.lock文件指定的版本,取拉取對應的版本,若是不存在,就拉取默認的版本,而且建立composer.lock文件
  2. 若是在composer.json文件中修改了版本號,必定要執行composer update,這樣,composer.lock文件就會被更新。
  3. 團隊開發的時候,必定要把composer.lock文件上傳到倉庫裏,這樣才能保證團隊裏的每個成員的版本都是一致的。

composer經常使用命令彙總

  1. composer install
  2. composer update
  3. composer require 庫名 [版本] 引入新庫或者修改原來庫版本
  4. composer selfupdate composer自身更新
  5. composer self-update --rollback 更新以後回退到上次的版本
  6. composer create-project 從現有的包裏建立一個新的項目 如:composer create-project topthink/think=5.0.* tp5 --prefer-dist 就能夠直接下載一個thinkphp5.0的代碼
  7. composer search 包名 好比 composer search monolog就能夠搜索composer的官方網站 https://packagist.org/ 上的有的包
  8. composer config composer配置命令,好比全局設置composer的國內鏡像 composer config -g repo.packagist composer https://packagist.phpcomposer.com
相關文章
相關標籤/搜索