【问题标题】:Symfony console component, class not foundSymfony 控制台组件,找不到类
【发布时间】:2017-06-13 08:38:15
【问题描述】:

我正在使用没有 Symfony 标准版的控制台组件,并且正在处理我的 application.php 文件。当我运行它时,它说:

致命错误:在第 10 行的 D:\ConnectCommand\vendor\application.php 中找不到类“GenerateTableCommand”

我的代码:

    <?php

require __DIR__.'\autoload.php';

use Symfony\Component\Console\Application;

    $application = new Application();

    $application->add(new GenerateTableCommand());

    $application->run();

?>

如果需要,可以在这里找到我的存储库:https://github.com/guuse/ConnectCommand

非常感谢任何帮助。

【问题讨论】:

    标签: php symfony class


    【解决方案1】:

    首先没有\GenerateTableCommand,如错误消息中所述。

    这个类在AppBundle\Command命名空间下,所以它的全名是AppBundle\Command\GenerateTableCommand

    你应该在开头添加use声明:

    use AppBundle\Command\GenerateTableCommand;
    

    无论如何,加载此类时您可能会遇到更多问题,因为您的自定义代码实际上没有任何自动加载器,因此 PHP 将无法加载此类。

    将第 3 方代码与您自己的代码(在 vendor 目录中)混合也不是一个好主意。

    【讨论】:

    • 正如我在回答中提到的,您的代码也没有自动加载器。
    • 我对 symfony 和控制台组件还很陌生,你知道如何让我的命令工作吗?我已经按照他们网站上的指南进行操作,但仍然遇到同样的错误
    • 那是因为您使用的不是 Symfony 标准版,而是 Symfony 框架,它实际上是一组组件。如果您刚开始使用 Symfony(或者甚至使用 PHP,因为您似乎不了解自动加载器),那么尝试使用 Symfony 标准可能会更好。无论如何,您的问题与 Symfony 无关,而是与 PHP 本身有关。您需要一个自动加载器来为您的自定义代码。最简单的方法是使用 Composer 为您生成它。在这里查看更多信息:getcomposer.org/doc/01-basic-usage.md#autoloading
    • 我将此添加到我的 composer.json 并更新了自动加载文件,但它似乎仍然不起作用:"autoload": { "psr-4": {"AppBundle\\": "AppBundle/命令/GenerateTableCommand.php"} } }
    • 会是这样的:{ "psr-4": {"AppBundle\\": "AppBundle/"} } }
    猜你喜欢
    • 2015-11-21
    • 2012-10-15
    • 1970-01-01
    • 2016-04-20
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多