ehime/hello-world

示例 Composer 项目

1.0.5 2015-07-31 17:53 UTC

This package is not auto-updated.

Last update: 2024-09-17 10:01:04 UTC


README

大家好!今天我将介绍如何使用 ComposerPackagist 为 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的连接,将无法再运行自动更新!