个性化阅读
专注于IT技术分析

如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

本文概述

Composer是PHP中用于依赖性管理的工具, 它允许你声明项目所依赖的库, 并且它将为你管理(安装或更新)它们。许多项目和框架都使用composer来处理依赖关系管理。但是, 这些软件包需要在某个地方注册, 而这正是packagist所做的。 Packagist是默认的Composer软件包存储库。它使你可以找到软件包, 并让Composer知道从何处获取代码。你可以使用社区开发的软件包, 也可以使用自己的软件包进行贡献。

在本文中, 你将学习如何在Github中创建要在作Composer中使用的PHP Packagist软件包, 以及如何在Packagist.org中进行注册。

1.创建包的基本结构

要以最小的表达式创建一个包, 我们将需要创建基本结构(2个文件夹和3个文件)。

  1. 首先创建一个带有你的包名称的文件夹, 在这种情况下, 容器文件夹将是hello-composer。
  2. 在hello-composer内部创建一个名为src的新文件夹, 该文件夹将包含你软件包的源代码。
  3. 创建包的第一个类(在hello-composer / src内部), 在这种情况下, 我们的类将是Hello, 文件名为Hello.php, 它将包含以下代码:
<?php 

/*
 * (c) YOUR NAME <your@email.com>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

// If you don't to add a custom vendor folder, then use the simple class
// namespace HelloComposer;
namespace ourcodeworld\HelloComposer;

class Hello
{
    public function say($toSay = "Nothing given")
    {
        return $toSay;
    }
}

可以根据需要更改名称空间, 在这种情况下, 我们会添加ourcodeworld前缀, 因为你可以创建很多程序包, 但是使用前缀后, 它们将始终与你相关(此外, 它将在文件夹中的单个文件夹中创建)。供应商目录)。

2.创建composer.json文件

composer.json文件应位于软件包(hello-composer / composer.json)存储库的顶部, 这是你向packagist和composer都描述软件包的方式。

首先, 你必须选择一个程序包名称。这是非常重要的一步, 因为它不能更改, 并且应该足够独特以避免将来发生冲突, 此名称必须位于composer.json文件的” name”属性中。

有两种创建包的composer.json文件的方法:

A.Composer助手

使用动态助手创建composer.json, 该助手会要求控制台中的每个属性, 然后通过控制台将其导航到软件包的文件夹:

cd c:/folder-where/your-package-is-located/hello-composer

然后执行:

composer init

遵循交互式提示, 并为每个字段提供一个值。如果在生成的composer.json中需要更多字段, 请参阅文档以获取更多属性, 或使用以下composer.json。

B.手动

你可以按照下一个示例手动创建自己的composer.json(根据你的值更改值):

{
    "name": "ourcodeworld/hello-composer", "description": "My first packagist package", "type": "package", "require": {
        "php": ">=5.3.0"
    }, "license": "mit", "authors": [
        {
            "name": "Your Name", "email": "your@email.com", "homepage": "http://yourhomepage-if-you-have.com"
        }
    ], "minimum-stability": "dev", "autoload": {
        "psr-4": {
            "ourcodeworld\\HelloComposer\\": "src/"
        }
    }
}

composer.json中最重要的一点是” psr-4″内的”自动加载”, 你将指定应自动加载程序包src /文件夹中具有命名空间ourcodeworld \ HelloComposer的所有文件。命名空间前缀必须以\\结尾, 以避免相似前缀之间的冲突。例如, Foo将匹配FooBar命名空间中的类, 因此尾随反斜杠可以解决问题:Foo \\和FooBar \\是不同的。

然后, 在发布并安装你的软件包后(尚未), 你可以使用以下方法实例化先前创建的类Hello:

<?php
require_once __DIR__ . '/../vendor/autoload.php';

use ourcodeworld\HelloComposer\Hello;

$instance = new Hello();

echo $instance->say("Hello World");

随意在composer.json和你的类中随意修改名称空间。创建完所有文件后, 项目的结构应如下所示(你可以访问Github中的测试存储库以查看那里的结构):

包装专家包装结构

3.托管你的包裹

为了在Packagist中发布软件包, 你需要将软件包托管在版本控制为GIT, Subversion或Mercurial的存储库中。如本文所述, 我们将使用Github与Git托管测试包。

如果尚未创建Github存储库, 请使用你的软件包名称(在本例中为hello-composer)创建许可证, 并根据需要进行许可:

创建仓库Github

创建完成后, 将存储库克隆到桌面中, 然后将包中的内容保存在其中。我们假设你对Git有所了解, 并且知道如何提交存储库中的所有文件。将所有文件提交到存储库后, 提交后, 检查所有文件是否已成功上传:

演示库Github

现在, 存储库应该位于https://github.com/ourcodeworld/hello-composer中, 而git网址为https://github.com/ourcodeworld/hello-composer.git。

4.在Packagist中注册软件包

导航到Packagist并创建一个新帐户(如果你没有)。拥有帐户后, 登录并转到”提交”, 然后继续创建你的软件包。

给出一个存储库URL, 在本例中为我们的存储库https://github.com/ourcodeworld/hello-composer, 然后单击”检查”, Packagist将检查软件包名称是否可用, 如果可用, 则单击”提交”。

软件包名称将从你存储库中的composer.json文件中检索:

注册包装打包人员

一旦你的软件包被接受, 你应该看到你的软件包最终发布:

打包发布的Packagist.org

请注意, 如果你按照步骤6进行操作, 则将删除警告”此软件包未自动更新”。

5.要求你的包装并进行测试

你的软件包已发布, 你可以要求作Composer!要求使用composer打包的命令是composer require <vendor-name> / <package-name>, 在这种情况下为:

composer require ourcodeworld/hello-composer

请注意, 如果package.json中的” minimum-stability”属性设置为” dev”, 则你需要该软件包的项目必须具有相同的” minimum-stability”属性, 否则你将得到以下异常在控制台中:

出于最低稳定性(稳定)的原因, 找不到任何版本的软件包<供应商名称> / <软件包名称>。检查包裹的拼写或最低稳定性

如果执行前面的命令将包添加到项目中, 则应显示以下输出:

Composer安装软件包

在此示例中, 为了测试我们创建的包是否正常工作, 我们将执行以下php脚本(因为这是测试, 因此我们加载了composer的autoload.php, 如果你使用的是symfony之类的框架, 则可能不需要不需要这样做):

<?php
// some-test-folder/index.php
require_once __DIR__ . '/vendor/autoload.php';

use ourcodeworld\HelloComposer\Hello;

$instance = new Hello();

echo $instance->say("Hello World");

使用命令:

php index.php

最终输出应为:

演示输出Composer软件包

恭喜, 你已经成功创建并发布了你的第一个包装专家包!

6.使用Webhooks在每次推送时设置自动更新程序包

通常, 要更新packagist软件包, 你需要提交更改, 然后访问Packagist.org内部的软件包, 然后单击Update:

更新按钮包Packagist

但这会变得非常烦人, 混乱和混乱, 这正是我们要与作Composer避免的事情。为了使事情变得简单, 你可以使用Github中存储库的Webhooks。 WebHook的概念很容易理解, WebHook只是HTTP回调, 发生某事时发生的HTTP POST, 并通过HTTP POST发送简单的事件通知, 在这种情况下, 此POST请求将由Github自动执行每次你对存储库进行一些更改时。

要启用此功能:

  • 导航到Github中的存储库, 然后单击”设置”。
  • 在本文档中, 从左侧菜单中选择”集成和服务”选项。
  • 单击添加服务并搜索Packagist, 然后单击它。
集成Packagist Github存储库

现在, 你可能会被重定向到以确认密码, 然后将出现以下窗口:

Packagist和Github集成服务

在此窗口中, 以你的Packagist.org用户名和Packagist令牌(此令牌是唯一的, 你可以在Packagist的个人资料中找到它)的形式提供, 选中”活动”框, 然后单击”添加服务”。现在, 你每次提交并推送更改时, Packagist中的软件包都将自动更新。

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

评论 抢沙发

评论前必须登录!