01-利用composer建立php代碼包

原文:羅志強的博客php

描述

在php社區中,利用composer管理php代碼包的方式愈來愈廣泛了。html

下面記錄下如何建立本身的代碼包linux

構建

  1. 建立一個包目錄
  2. 執行composer init 進行包初始化
  3. 按照步驟完成包信息
  4. 生成composer.json文件
mkdir test-pack
cd test-pack
composer init
複製代碼

初始化composer.json後,你能夠修改composer.json裏面的任何信息和依賴。git

通常composer包的結構都會在根目錄下建立兩個目錄,src和tests。而後經過修改composer.json來讓src和tests自動加載,psr-4是php社區的文件加載規範,經過加入如下配置,那麼src目錄下的文件命名空間都必須以 Diablo\xxxx開頭,其實就是一個映射關係,你能夠修改任何命名空間前綴映射到任何目錄下github

完整的composer.jsonjson

{
    "name": "diablo/test-pack",
    "authors": [
        {
            "name": "Diablo",
            "email": "iluozhiqiang@gmail.com"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4": {
            "Diablo\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    }
}
複製代碼

編輯好composer.json後,就能夠執行composer安裝命令來構建自動加載了bash

composer install
複製代碼

在src下我建立了一個Auth.php文件composer

<?php

namespace Diablo;

class Auth {
    public function __construct() {

    }

    public function login($params) {
        return [
            'uid' => 1,
            'name' => 'diablo',
            'email' => 'iluozhiqiang@gmail.com',
        ];
    }
}

複製代碼

而後我在tests目錄下建立一個測試文件AuthTest.php,看這個包有沒有正常加載post

<?php

require "../vendor/autoload.php";


use Diablo\Auth;

$auth = new Auth;
$user = $auth->login([]);
print_r($user);

複製代碼

執行下測試文件測試

cd tests
php AuthTest.php
Array
(
    [uid] => 1
    [name] => diablo
    [email] => iluozhiqiang@gmail.com
)
複製代碼

有正常輸出。咱們的包構建好了

發佈

首先你應該講代碼提交到代碼倉庫,例如github或者私有的git倉庫

發佈到 packagist

好的,你如今能夠發佈你的包了,但你不會但願你的用戶每次都這樣繁瑣的指定包的來源。

你可能注意到了另外一件事,咱們並無指定 monolog/monolog 的來源。它是怎麼工做的?答案是 packagist。

Packagist 是 Composer 主要的一個包信息存儲庫,它默認是啓用的。任何在 packagist 上發佈的包均可以直接被 Composer 使用。就像 monolog 它被 發佈在 packagist 上,咱們能夠直接使用它,而沒必要指定任何額外的來源信息。

若是咱們想與世界分享咱們的 hello-world,咱們最好將它發佈到 packagist 上。這樣作是很容易的。

你只須要點擊那個大大的 "Submit Package" 按鈕並註冊。接着提交你庫的來源地址,此時 packagist 就開始了抓取。一旦完成,你的包將能夠提供給任何人使用。

相關文章
相關標籤/搜索