composer - 测试创建的包 - class 未找到

composer - testing created package - class not found

我正在尝试使用本教程中的 composer 创建 Hello world 包

http://grossi.io/2013/creating-your-first-composer-packagist-package/

半天前我设法创建并测试了它,但现在在不同的目录中我又试了几次 - 无法使其工作并且不明白为什么我会出现错误,稍后会显示。

这是我的做法:

在 HelloWorld 目录中,我创建了 src 目录。 在 src 目录中,我将文件 SayHello.php

namespace HelloWorld;

class SayHello
{
    public static function world()
    {
        return 'Hello World, Composer!';
    }
}

运行

composer init

创建composer.json文件后,我编辑,最后是这样的:

{
    "name": "vagrant/hello-world",
    "description": "test",
    "license": "no",
    "authors": [
        {
            "name": "darius",
            "email": "darius@darius.lt"
        }
    ],
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "psr-0": {
            "HelloWorld": "src/"
        }
    }
}

那我运行

composer install

我得到输出:

Loading composer repositories with package information
Installing dependencies (including require-dev)
Nothing to install or update
Generating autoload files

教程说

Composer installed create a directory "tests" inside your root dir.

但是我没有看到这样的目录,所以我在HelloWorld目录下自己创建了它。可能作者漏补了。

然后我创建文件test.php

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

use HelloWorld\SayHello;

echo SayHello::world();

运行:

php tests/test.php

并得到:

PHP 致命错误:在第 7

行的 /home/vagrant/package_dev/workbench/oitlabs/HelloWorld/tests/test.php 中找不到 Class 'HelloWorld\SayHello'

现在怎么能看到呢?我试着加入 test.php

require_once __DIR__ . '/../src/SayHello.php';

然后它会看到并起作用,所以这意味着它应该会看到该文件。所以它有点像作曲家生成错误的自动加载文件或其他东西。我该如何调试?

还在我第一次成功的目录附近的另一个目录中尝试了相同的步骤,只是使用命名空间 Hello。同样的错误。

这也是文件 - 我的包的外观,作曲家生成的内容: http://www58.zippyshare.com/v/Hsfg4pVf/file.html

问题是 - 我需要在 src 目录中有目录 "HelloWorld"。

因此文件夹结构如下所示:

Root
  src
      HelloWorld
            SayHello.php
  tests
      test.php
  vendor
  composer.json