ehime / hello-world
示例 Composer 项目
Requires
- php: >=5.4.0
Requires (Dev)
- mockery/mockery: 0.8.*
- phpunit/phpunit: 4.3.5
This package is not auto-updated.
Last update: 2024-09-17 10:01:04 UTC
README
大家好!今天我将介绍如何使用 Composer 和 Packagist 为 PHP 社区创建包(或更新您的包)来贡献力量。
使用 Composer
Composer 是 PHP 的包管理器。您可以使用社区开发的包,也可以贡献您自己的包。在这里,我将展示如何创建一个项目/包,在项目内部安装 Composer,并将其发送到 Packagist,以便其他开发者可以在他们的项目中使用它。
创建包
您可以为使用 Composer 的新项目或更新项目。我将创建一个“Hello World”类。这是一个简单的类,但您也可以创建复杂的项目并与其他开发者分享。我将使用“hello-world”作为项目的名称。Composer 的工作方式是“vendor/package”命名格式。在这里,我们可以将我的名字“ehime”设置为“vendor”名称,将包名称“hello-world”设置为项目名称。
文件结构
您可以将所有文件放在主目录中,但我强烈建议创建另一个目录,例如“src”,以使代码更容易理解并保持代码组织有序。项目结构将如下所示:* hello-world(根目录)* src * HelloWorld * SayHello.php 我们的 SayHello.php 文件将包含
<?php
namespace HelloWorld;
class SayHello
{
public static function world()
{
return 'Hello World, Composer!';
}
}
启动 Composer
由于我们的项目已经准备好了,我们可以在其中“安装”Composer。这只是在根目录中创建一个“composer.json”文件,但 Composer 可以为您完成这项工作。在您的项目根目录中:composer init 您将获得以下 Composer 响应
localhost:composer-helloworld $ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [ehime/hello-world]:
You can accept the default or customize it like "yourname/hello" or what you want. Complete all Composer questions like:
Package name (<vendor>/<name>) [ehime/hello-world]: ehime/hello-world
Description []: My first Composer project
Author [ehime <dodomeki@gmail.com>]: Your Name <your@name.com>
Minimum Stability []: dev
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
{
"name": "ehime/hello-world",
"description": "My first Composer project",
"authors": [
{
"name": "Your Name",
"email": "your@name.com"
}
],
"minimum-stability": "dev",
"require": {
}
}
Do you confirm generation [yes]? yes
Now you have "composer.json" file saved in your root dir. It's almost ready but we must do some changes:
{
"name": "ehime/hello-world",
"description": "My first Composer project",
"authors": [
{
"name": "Your Name",
"email": "your@name.com"
}
],
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
}
在这里我们所做的是添加有关 PHP 5.3 作为最低要求的信息(require 部分),并告诉 Composer“自动加载”(使用 PSR-0)src 目录中所有具有“HelloWorld”命名空间名称的文件。
测试包
当然,我们想进行一个简单的测试来验证我们的类是否运行良好。您可以在新的项目中“粘贴”您的类或在自己的项目中测试,后者更好且更容易。我们正在创建一个 Composer 项目,因此必须在我们的项目中安装 Composer 文件。因此,在根目录中运行“composer install”来安装它
composer install
由于您在“composer.json”中只有“php >=5.3.0”,Composer 将仅安装它自己的文件。安装 Composer 后,在根目录中创建一个名为“tests”的目录。在它里面创建一个名为“TestCase.php”的文件,内容如下
<?php
require_once __DIR__ . '/../vendor/autoload.php'; // Autoload files using Composer autoload
use HelloWorld\SayHello;
echo SayHello::world();
转到终端(或在“tests”目录中创建一个 PHP 网络服务器)并输入
php -f tests/HelloWorld/Tests/TestCase.php
您将得到“Hello World, Composer!”。它现在正在运行。
发送到 Packagist.org
现在,您的项目正在运行,您希望将其发送到 Packagist。最简单的方法是使用 Git 将项目推送到 Github。转到 Github,创建一个名为“composer-helloworld”的公共仓库,在您的根目录中启动 Git 项目并推送它
git init
git add .
git commit -m "First commit"
git remote add origin git@github.com:username/hello-world.git
git push origin master
现在您已经将项目放入了GitHub仓库,并准备好将其发送到Packagist。前往Packagist网站,创建账户,登录并提交一个包。Packagist会要求您提供仓库URL(Git/Svn/Hg)。将以下链接粘贴到其中git@github.com:username/hello-world.git,并点击"检查!"。Packagist将检查您的项目并返回项目名称。如果正确,请接受。
Packagist详细信息
每次您在GitHub上提交新的commit时,都必须更新Packagist。进入您的账户,您的包,并点击"强制更新!"。Packagist将访问GitHub并更新源。您可以通过前往您的GitHub仓库,点击"设置",然后在"服务钩子"后点击"Packagist"服务来开启"自动更新"。在那里使用您的信息更新,例如
- 用户:您的Packagist用户名,例如ehime
- 令牌:您的API令牌,您可以在Packagist设置链接中找到
- 域名:packagist.org 好的!自动更新完成,您的包现在可供其他开发者使用。
从现在起,您可以使用以下命令将此项目嵌入到另一个工作流程中。
composer require ehime/hello-world
我们的第一个Composer包已经完成,但您可以使用它做更多的事情。谢谢!
注意
如果任何时刻您更改了仓库URL,您将断开与Packagist的连接,将无法再运行自动更新!