2014-07-09 146 views
0

我使用Laravel 4.1和工匠工具爲我們的網站開發一些cli腳本。 這些腳本將通過cron作業在後臺運行。Laravel工匠命令行

我遇到了一個錯誤/功能,並想知道是否有其他人遇到這個問題或知道如何克服這個問題。

說明:

在啓動文件夾下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); 

在應用程序 - >命令我有我的所有命令。 在AutoInventoryCommand.php我在__construct方法中運行截斷表,但我發現每個cli命令都調用truncate。

例如VinCommand:

php artisan command:vin_command 

也運行AutoInventoryCommands __construct方法,這是造成總是被截斷的表。

是否將常規知識放在__construct方法中?

在其他一些命令中,我在__contruct方法中設置了私有靜態變量。這是不好的做法。我應該有一個被調用的_init()方法:

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

這將設置我的變量。如果我沒有:

echo "Table Truncated \n"; 

在截斷方法中,我從來沒有抓到過。

所以這是一個bug /常識

我認爲發生這種情況,因爲當所有的__constructs被稱爲:

Artisan::add(); 

叫?

回答

0

當然它運行在每個命令上。你的代碼中有new AutoInventoryCommand

如果你堅持保留在構造函數中的代碼(你應該),你可以用resolve而不是註冊你的命令:

Artisan::resolve('AutoInventoryCommand');