composer - 测试创建的包 - 找不到类

时间:2015-01-20 15:00:46

标签: php composer-php

我正在尝试使用本教程中的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创建一个目录" tests"在你的根目录内。

但是我没有看到这样的目录,所以我自己在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致命错误:Class' HelloWorld \ SayHello'在第7行的/home/vagrant/package_dev/workbench/oitlabs/HelloWorld/tests/test.php中找不到

现在怎么看?我尝试过test.php

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

然后它看起来和工作,所以这意味着它应该看到该文件。所以它有点像作曲家生成错误的自动加载文件或其他东西。我该怎么调试呢?

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

这也是文件 - 我的包看起来如何,composer生成的内容: http://www58.zippyshare.com/v/Hsfg4pVf/file.html

1 个答案:

答案 0 :(得分:1)

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

所以文件夹结构如下所示:

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