如何将句柄方法调用到 routes.php 文件中?
How to call a handle method into an routes.php file?
我想在我的命令行中 运行 php artisan make:greetings
命令时打印一条日志消息它应该 return 我的日志文件中的一条消息,关于如何调用句柄routes.php 文件中的方法,为此我正在编写一些代码,但出现以下错误请帮助我解决此问题
Error
TypeError
Argument 2 passed to Illuminate\Foundation\Console\Kernel::command() must be an instance of Closure, array given,
called in C:\apiato-project\apiato\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php on line 261
at C:\apiato-project\apiato\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php:191
187▕ * @param string $signature
188▕ * @param \Closure $callback
189▕ * @return \Illuminate\Foundation\Console\ClosureCommand
190▕ */
➜ 191▕ public function command($signature, Closure $callback)
192▕ {
193▕ $command = new ClosureCommand($signature, $callback);
194▕
195▕ Artisan::starting(function ($artisan) use ($command) {
1 C:\apiato-project\apiato\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php:261
Illuminate\Foundation\Console\Kernel::command("make:greetings", ["App\Console\Commands\Hello"])
2 C:\apiato-project\apiato\app\Ship\Commands\Routes.php:24
Illuminate\Support\Facades\Facade::__callStatic("command")
routes.php
Artisan::command('make:greetings',[Hello::class,'handle'=>true]);
Hello.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Log;
class Hello extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'make:greetings';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
return Log::info("welcome message");
}
}
第二个参数必须是一个闭包,而你正在传递一个数组,这个闭包用于将数据传递给你的 handle 方法,因为你的 handle 方法中没有任何参数,请使用调用方法而不是命令,试试这个:
Artisan::call('make:greetings');
并且不要忘记在 App\Console\Kernel class:
中注册您的命令
protected $commands = [
'App\Console\Commands\Hello',
];
我想在我的命令行中 运行 php artisan make:greetings
命令时打印一条日志消息它应该 return 我的日志文件中的一条消息,关于如何调用句柄routes.php 文件中的方法,为此我正在编写一些代码,但出现以下错误请帮助我解决此问题
Error
TypeError
Argument 2 passed to Illuminate\Foundation\Console\Kernel::command() must be an instance of Closure, array given,
called in C:\apiato-project\apiato\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php on line 261
at C:\apiato-project\apiato\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php:191
187▕ * @param string $signature
188▕ * @param \Closure $callback
189▕ * @return \Illuminate\Foundation\Console\ClosureCommand
190▕ */
➜ 191▕ public function command($signature, Closure $callback)
192▕ {
193▕ $command = new ClosureCommand($signature, $callback);
194▕
195▕ Artisan::starting(function ($artisan) use ($command) {
1 C:\apiato-project\apiato\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php:261
Illuminate\Foundation\Console\Kernel::command("make:greetings", ["App\Console\Commands\Hello"])
2 C:\apiato-project\apiato\app\Ship\Commands\Routes.php:24
Illuminate\Support\Facades\Facade::__callStatic("command")
routes.php
Artisan::command('make:greetings',[Hello::class,'handle'=>true]);
Hello.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Log;
class Hello extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'make:greetings';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
return Log::info("welcome message");
}
}
第二个参数必须是一个闭包,而你正在传递一个数组,这个闭包用于将数据传递给你的 handle 方法,因为你的 handle 方法中没有任何参数,请使用调用方法而不是命令,试试这个:
Artisan::call('make:greetings');
并且不要忘记在 App\Console\Kernel class:
中注册您的命令 protected $commands = [
'App\Console\Commands\Hello',
];