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 就开始了抓取。一旦完成,你的包将能够提供给任何人使用。

相关文章
相关标签/搜索