mfacenet/hello-world

该软件包已被废弃且不再维护。未建议替代软件包。

我的第一个Composer项目

v1.0.4 2015-07-31 20:13 UTC

This package is not auto-updated.

Last update: 2017-12-15 20:10:17 UTC


README

大家好!今天我将介绍如何使用Composer和Packagist为PHP社区贡献(或更新自己的)软件包。

使用Composer

Composer是PHP的包管理器。您可以使用社区开发的软件包,也可以贡献自己的软件包。在这里,我将展示如何创建一个项目/软件包,在项目内部安装Composer,并将其发送到Packagist,以便其他开发者在他们的项目中使用。

创建软件包

您可以使用Composer创建一个新项目或更新一个现有项目。我将创建一个hello world类。这是一个简单的类,但您也可以创建复杂的项目并与其他开发者共享。我将使用"hello-world"作为项目的名称。Composer使用"vendor/package"的名称格式工作。在这里,我们可以将"vendor"名称设置为我的名字:"ehime",将软件包名称设置为"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 [Junior Grossi <me@ehime.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"
        }
    ],
    "minimum-stability": "dev",
    "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"的目录。在它里面创建一个名为"test.php"的文件,内容如下:

<?php

require_once __DIR__ . '/../vendor/autoload.php'; // Autoload files using Composer autoload

use HelloWorld\SayHello;

echo SayHello::world();

转到终端(或创建一个位于"tests"目录中的PHP网络服务器)并输入:

php tests/test.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/helloworld.git
git push origin master

现在您的项目已经在 Github 仓库中,并且准备好发送到 Packagist。访问Packagist 网站,创建您的账户,登录并提交一个包。Packagist 会要求您提供仓库 URL(Git/Svn/Hg)。粘贴以下内容到其中 git@github.com:username/composer-helloworld.git,然后点击 "检查!"。Packagist 将检查您的项目并返回项目名称。如果正确,请接受。Packagist 详细信息

每次您在 Github 上进行新的提交时,都必须更新 Packagist。进入您的账户,您的包,然后点击 "强制更新!"。Packagist 将前往 Github 并更新源代码。您可以通过访问您的 Github 仓库,点击 "设置",在 "服务钩子" 后点击 "Packagist" 服务来启用 "自动更新"。在那里更新您的信息,例如

  • 用户:您的 Packagist 用户名,例如 ehime
  • 令牌:您的 API 令牌,您可以在 Packagist 设置链接中找到
  • 域名:packagist.org 好的!自动更新完成,您的包对其他开发者可用。

从现在起,您可以使用以下命令将此项目嵌入到另一个工作流程中。

composer require ehime/hello-world

我们的第一个 Composer 包已经完成,但您可以使用它做更多的事情。谢谢!