【问题标题】:How to create a listener for console commands如何为控制台命令创建监听器
【发布时间】:2017-02-03 17:01:12
【问题描述】:

我想在运行每个控制台命令时运行一个方法,如何为 lumen 中的所有控制台命令创建侦听器?

我尝试为ConsoleCommandEvent创建一个监听器,这个事件在\Symfony\Component\Console\Application::doRunCommand中被触发,但是没有附加事件调度器(阅读方法上面的评论: 如果已将事件调度器附加到应用程序,则事件也会在命令的生命周期内调度。)

更新使用此事件:Illuminate\Console\Events\ArtisanStarting 可能有助于完成这项工作,但它是一个不同的事件。通过在您运行 php artisan 的任何时候这样做,无论您是否运行实际命令,您的代码都将被执行。

【问题讨论】:

    标签: php laravel console lumen


    【解决方案1】:

    在 Laravel 中,你可以收听 CommandStarting 事件,illuminate/console 也可以使用。

    【讨论】:

      【解决方案2】:

      如果你只需要在每个命令执行时执行某个方法,你可以监听这个类。

      Illuminate\Console\Events\ArtisanStarting
      

      但我不知道如何获取侦听器中每个命令的名称。

      【讨论】:

      • 我已经发现这个活动很好。但问题是,正如它所说,它是在工匠开始时被解雇的!所以任何时候你运行php artisan 它都会触发事件,即使你只是想看到php artisan --help。因此,我将尝试找到一种附加调度程序的方法。顺便说一句,比你上一个解决方案好多了:)
      • @Mohammad Mehdi Habibi 写在这里,如果你发现了。我认为您需要检查参数是否发送到php artisan,并且不要检查--help等选项
      • 显然你可以获取参数和等等来检查它是否是一个实际的命令并解决问题,但它并不是那么好,除非我们必须这样做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多