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

本文概述

  • 1.创建包的基本结构
  • 2.创建composer.json文件
  • 3.托管你的包裹
  • 4.在Packagist中注册软件包
  • 5.要求你的包装并进行测试
  • 6.使用Webhooks在每次推送时设置自动更新程序包
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中的测试存储库以查看那里的结构):
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
3.托管你的包裹 为了在Packagist中发布软件包, 你需要将软件包托管在版本控制为GIT, Subversion或Mercurial的存储库中。如本文所述, 我们将使用Github与Git托管测试包。
如果尚未创建Github存储库, 请使用你的软件包名称(在本例中为hello-composer)创建许可证, 并根据需要进行许可:
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
创建完成后, 将存储库克隆到桌面中, 然后将包中的内容保存在其中。我们假设你对Git有所了解, 并且知道如何提交存储库中的所有文件。将所有文件提交到存储库后, 提交后, 检查所有文件是否已成功上传:
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
现在, 存储库应该位于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将检查软件包名称是否可用, 如果可用, 则单击” 提交” 。
【如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中】软件包名称将从你存储库中的composer.json文件中检索:
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
一旦你的软件包被接受, 你应该看到你的软件包最终发布:
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
请注意, 如果你按照步骤6进行操作, 则将删除警告” 此软件包未自动更新” 。
5.要求你的包装并进行测试 你的软件包已发布, 你可以要求作Composer!要求使用composer打包的命令是composer require < vendor-name> / < package-name> , 在这种情况下为:
composer require ourcodeworld/hello-composer

请注意, 如果package.json中的” minimum-stability” 属性设置为” dev” , 则你需要该软件包的项目必须具有相同的” minimum-stability” 属性, 否则你将得到以下异常在控制台中:
出于最低稳定性(稳定)的原因, 找不到任何版本的软件包< 供应商名称> / < 软件包名称> 。检查包裹的拼写或最低稳定性
如果执行前面的命令将包添加到项目中, 则应显示以下输出:
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
在此示例中, 为了测试我们创建的包是否正常工作, 我们将执行以下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

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

文章图片
恭喜, 你已经成功创建并发布了你的第一个包装专家包!
6.使用Webhooks在每次推送时设置自动更新程序包 通常, 要更新packagist软件包, 你需要提交更改, 然后访问Packagist.org内部的软件包, 然后单击Update:
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
但这会变得非常烦人, 混乱和混乱, 这正是我们要与作Composer避免的事情。为了使事情变得简单, 你可以使用Github中存储库的Webhooks。 WebHook的概念很容易理解, WebHook只是HTTP回调, 发生某事时发生的HTTP POST, 并通过HTTP POST发送简单的事件通知, 在这种情况下, 此POST请求将由Github自动执行每次你对存储库进行一些更改时。
要启用此功能:
  • 导航到Github中的存储库, 然后单击” 设置” 。
  • 在本文档中, 从左侧菜单中选择” 集成和服务” 选项。
  • 单击添加服务并搜索Packagist, 然后单击它。
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

文章图片
现在, 你可能会被重定向到以确认密码, 然后将出现以下窗口:
如何使用Github创建你的第一个PSR-4 composer/包装专家包并将其发布在Packagist中

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

    推荐阅读