01-利用composer创建php代码包

01-利用composer创建php代码包

原文:罗志强的博客

描述

在php社区中,利用composer管理php代码包的方式越来越普遍了。

下面记录下如何创建自己的代码包

构建

  1. 创建一个包目录
  2. 执行composer init 进行包初始化
  3. 按照步骤完成包信息
  4. 生成composer.json文件
mkdir test-packcd test-packcomposer init

初始化composer.json后,你可以修改composer.json里面的任何信息和依赖。

一般composer包的结构都会在根目录下创建两个目录,src和tests。然后通过修改composer.json来让src和tests自动加载,psr-4是php社区的文件加载规范,通过加入以下配置,那么src目录下的文件命名空间都必须以 Diablo\xxxx开头,其实就是一个映射关系,你可以修改任何命名空间前缀映射到任何目录下

完整的composer.json

{    "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安装命令来构建自动加载了

composer install

在src下我创建了一个Auth.php文件

<?phpnamespace Diablo;class Auth{    public function __construct()    {    }    public function login($params)    {        return [            'uid' => 1,            'name' => 'diablo',            'email' => 'iluozhiqiang@gmail.com',        ];    }}

然后我在tests目录下创建一个测试文件AuthTest.php,看这个包有没有正常加载

<?phprequire "../vendor/autoload.php";use Diablo\Auth;$auth = new Auth;$user = $auth->login([]);print_r($user);

执行下测试文件

cd testsphp AuthTest.phpArray(    [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 就开始了抓取。一旦完成,你的包将可以提供给任何人使用。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部