PHP Laravel - 运行 使用来自命令的变量的控制器的最佳实践
PHP Laravel - Best practice to run controller with variable from command
我正在尝试在 Laravel 中设置一个命令,它应该每天 运行 在 18:30。
我在控制器中有一个函数,我希望 运行(这是放置只能从命令行 运行 的函数的正确位置吗?):
ReportController.php
:
public function process($reportName)
{
return("Function process has run correctly. Report: ".$reportName." ");
}
我已经创建了一个命令文件:
ProcessReports.php
namespace App\Console\Commands;
use App\Http\Controllers\ReportController;
use Illuminate\Console\Command;
class ProcessReports extends Command
{
protected $signature = 'report:process {reportName}';
protected $description = 'Process reports from FTP server';
public function __construct()
{
parent::__construct();
}
public function handle()
{
//
$ReportController = new ReportController();
$ReportController->process($reportName);
}
}
此外,在我的 Kernel.php
我已经注册了我的命令:
Kernel.php
:
protected $commands = [
'App\Console\Commands\ProcessReports',
];
protected function schedule(Schedule $schedule)
{
$schedule->command('report:process MyReport')
->dailyAt('18:30');
}
然后我尝试 运行 我的命令,例如:$ php artisan report:process MyReport
。但这是不可能的。它给了我这个错误:
Undefined variable: reportName
任何人都可以指导我如何创建命令,这些命令可以 运行 我的日常功能吗?
您需要先获取参数,将您的 handle()
方法更改为:
public function handle()
{
//
$reportName = $this->argument('reportName');
$ReportController = new ReportController();
$ReportController->process($reportName);
}
我正在尝试在 Laravel 中设置一个命令,它应该每天 运行 在 18:30。
我在控制器中有一个函数,我希望 运行(这是放置只能从命令行 运行 的函数的正确位置吗?):
ReportController.php
:
public function process($reportName)
{
return("Function process has run correctly. Report: ".$reportName." ");
}
我已经创建了一个命令文件:
ProcessReports.php
namespace App\Console\Commands;
use App\Http\Controllers\ReportController;
use Illuminate\Console\Command;
class ProcessReports extends Command
{
protected $signature = 'report:process {reportName}';
protected $description = 'Process reports from FTP server';
public function __construct()
{
parent::__construct();
}
public function handle()
{
//
$ReportController = new ReportController();
$ReportController->process($reportName);
}
}
此外,在我的 Kernel.php
我已经注册了我的命令:
Kernel.php
:
protected $commands = [
'App\Console\Commands\ProcessReports',
];
protected function schedule(Schedule $schedule)
{
$schedule->command('report:process MyReport')
->dailyAt('18:30');
}
然后我尝试 运行 我的命令,例如:$ php artisan report:process MyReport
。但这是不可能的。它给了我这个错误:
Undefined variable: reportName
任何人都可以指导我如何创建命令,这些命令可以 运行 我的日常功能吗?
您需要先获取参数,将您的 handle()
方法更改为:
public function handle()
{
//
$reportName = $this->argument('reportName');
$ReportController = new ReportController();
$ReportController->process($reportName);
}