Composer 學習實踐

zs4336 發表於2019-08-13

一、基礎知識

安裝依賴
composer install 
  • install 命令將會檢查鎖檔案 composer.lock 是否存在,如果存在,它將下載指定的版本(忽略 composer.json 檔案中的定義),如果不存在 composer.lock 檔案,Composer 將讀取 composer.json 並建立鎖檔案
  • 該命令會做兩件事情,一是下載專案依賴包到 vendor 目錄,二是建立 composer.lock 檔案(如果不存在)
新增依賴
  • 方式一
    composer require packagistName
  • 方式二
    • 手動更改新增 composer.json 檔案的依賴項 require
    • 執行 composer update [packagistName] 命令進行安裝
更新依賴
 composer update [packagistName]
自動載入
  • psr-4 自動載入定義一個從名稱空間到目錄的對映
  • classmap 是指沒有名稱空間的類庫進行自動載入
  • files 自動載入檔案,一般用於公共函式檔案
  • 自動載入時需要引入 vendor/autoload.php 檔案
  • 當專案新增了沒有名稱空間的類庫檔案,要想實現自動載入,需要執行 composer dump-autoload 命令
{
    "require": {
        "nesbot/carbon": "^1.39",
        "larapack/dd":"1.*"
    },
    "autoload": {
        "psr-4": {
            "app\\": "app/"
        },
        "classmap": ["lib/"],
        "files": ["app/common/helpers.php"]
    }
}
釋出依賴
  • 釋出到 VCS(線上版本控制系統)
  • 釋出到 packagist
  • 釋出到其他資源庫

二、學以致用,建立一個專案

首先建立 composer.json 檔案

{
    "name": "phpzs4336/topmdrt",
    "type": "project",
    "require": {
        "nesbot/carbon": "^1.39",
        "larapack/dd":"1.*"
    },
    "autoload": {
        "psr-4": {
            "app\\": "app/"
        },
        "classmap": ["lib/"],
        "files": ["app/common/helpers.php"]
    }
}

分別建立 app 應用目錄,lib 類庫目錄,public 公共訪問目錄(包含入口檔案 index.php)

<?php
    include '../vendor/autoload.php';

    use Carbon\Carbon;
    use app\controller\TestController;

    //使用自動載入類
    $qr = new QRcode();
    $qr->getQrcode();

    echo "<hr>";

    //使用名稱空間類
    $test = new TestController();
    $test->index();

    echo "<hr>";

    //使用公共函式
    echo get_rand_str();

    echo "<hr>";

    Carbon::setLocale('zh');
    $humans = Carbon::now()->subDays(5)->diffForHumans();
    dd($humans);

瀏覽器訪問入口檔案,結果如下圖
img
附:專案程式碼地址