【问题标题】:Laravel artisan command lineLaravel 工匠命令行
【发布时间】:2014-08-30 21:55:27
【问题描述】:

我正在使用 Laravel 4.1 和 artisan 工具为我们的网站开发一些 cli 脚本。 这些脚本将通过 cron 作业在后台运行。

我遇到了一个错误/功能,想知道是否有其他人遇到过这个问题或知道如何解决这个问题。

说明:

在 artisan.php 下的 start 文件夹中,我添加了我的命令:

Artisan::add(new VinCommand);
Artisan::add(new DealersCommand);
Artisan::add(new ReportingCommand);
Artisan::add(new AutoInventoryCommand);
Artisan::add(new VastLeadsCommand);
Artisan::add(new SendInventoryAlertsCommand);
Artisan::add(new JumpstartCapCommand); 

在 app -> commands 我有我所有的命令。 在 AutoInventoryCommand.php 中,我在 __construct 方法中运行截断表,但我发现每个 cli 命令都调用了截断表。

例如 VinCommand:

php artisan command:vin_command

还运行 AutoInventoryCommands __construct 方法,这会导致表始终被截断。

__construct方法中不要放任何逻辑是常识吗?

在其他一些命令中,我在 __contruct 方法中设置了私有静态变量。这是不好的做法。我是否应该有一个被调用的 _init() 方法:

public function fire()
{
    $this->_init();
}

这将设置我的变量。如果我没有:

echo "Table Truncated \n"; 

在截断方法中。

所以这是一个错误/常识

我认为这是因为所有 __constructs 都在以下情况下被调用:

Artisan::add();

被调用?

【问题讨论】:

    标签: php laravel laravel-4 command-line-interface


    【解决方案1】:

    当然,它会在每个命令上运行。你的代码中有new AutoInventoryCommand

    如果您坚持将代码保留在构造函数中(您不应该这样做),您可以使用 resolve 注册您的命令:

    Artisan::resolve('AutoInventoryCommand');
    

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 2014-09-07
      • 2013-09-25
      • 2015-09-24
      • 2020-12-25
      • 2019-05-20
      • 1970-01-01
      • 2022-08-10
      • 2015-05-24
      相关资源
      最近更新 更多