【问题标题】:Symfony Override Command Class from third-party BundleSymfony 覆盖来自第三方 Bundle 的命令类
【发布时间】:2017-12-19 19:26:02
【问题描述】:

我有一个项目,我在其中使用 JMose's Command Scheduler Bundle 来创建一个 cronjob 管理器。 cronjob 管理器处理我自己的自定义 Symfony 命令 parse:source

问题是这个 repo 正在处理异常并在命令控制台上抛出错误,如果它包含 $e->getLine() 方法以便将异常消息与行一起打印,这将非常整洁产生了它。 你可以在下面看到他的代码。

    try {
        $output->writeln('<info>Execute</info> : <comment>' . $scheduledCommand->getCommand()
            . ' ' . $scheduledCommand->getArguments() . '</comment>');
        $result = $command->run($input, $logOutput);
    } catch (\Exception $e) {
        $logOutput->writeln($e->getMessage());
        $logOutput->writeln($e->getTraceAsString());
        $result = -1;
    }

我想要的是重写他的类以添加那行代码。我试过没有运气,我无法在 Symfony 文档网站上找到帮助。

我当前的项目结构看起来像这样。我突出显示了 ExecuteCommand 类,因为它是我要覆盖的类。

【问题讨论】:

    标签: php symfony exception overriding symfony-console


    【解决方案1】:

    以详细模式运行命令:

    php bin/console parse:source -v
    

    使用 Symfony 控制台事件: https://symfony.com/doc/3.4/components/console/events.html

    有一个事件称为:EXCEPTIONconsole.exception,您可以在其中捕获任何命令异常。

    【讨论】:

    • 您好,问题是 JMose Bundle 已经在处理异常。此外,我不希望控制台事件处理异常。我需要 JMose 处理异常,以便可以将其写入为该命令执行创建的 cronlog 文件中。
    猜你喜欢
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多