【问题标题】:composer - testing created package - class not found作曲家 - 测试创建的包 - 找不到类
【发布时间】:2015-01-20 15:00:46
【问题描述】:

我正在尝试使用本教程中的作曲家创建 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 致命错误:在第 7 行的 /home/vagrant/package_dev/workbench/oitlabs/HelloWorld/tests/test.php 中找不到类“HelloWorld\SayHello”

它现在怎么能看到它?我尝试添加到 test.php

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

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

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

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

【问题讨论】:

    标签: php composer-php


    【解决方案1】:

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

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

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

    【讨论】:

    • 但是任何知道调试目录结构和命名空间的更快方法的人,都欢迎告诉:)
    • 是否需要创建test目录??
    • @Jabaa - 可能不是,但它很有用。通常你应该有自动测试。并且在开发时,您不需要使用真实的项目作为测试环境。你从这个目录运行你的测试并知道你是否实现了功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2012-12-06
    • 2018-04-13
    • 2015-09-03
    • 1970-01-01
    • 2015-11-26
    • 2019-05-10
    相关资源
    最近更新 更多