Laravel工匠命令行

时间:2014-07-09 18:16:33

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

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

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

说明

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

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下 - >命令我拥有所有命令。 在AutoInventoryCommand.php中,我在__construct方法中运行truncate table,但我发现每个cli命令都会调用truncate。

例如VinCommand:

php artisan command:vin_command

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

通常不知道在__construct方法中放置任何逻辑吗?

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

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

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

,我绝不会抓住这个
echo "Table Truncated \n"; 
截断方法中的

这是一个错误/常识

我认为这种情况正在发生,因为在:

时会调用所有__constructs
Artisan::add();

被称为?

1 个答案:

答案 0 :(得分:0)

当然它是在每个命令上运行的。您的代码中有new AutoInventoryCommand

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

Artisan::resolve('AutoInventoryCommand');