jea*_*_re 3 php artisan laravel-5.1
我正在尝试为Laravel 5.1制作一个工匠命令,我甚至无法使用最基本的版本.
采取的步骤
1) php artisan make:console Zelda --command=zelda
2)app/Console/Command/Zelda.php使用以下内容创建的文件
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class Zelda extends Command
{
protected $signature = 'zelda';
protected $description = 'Command description.';
public function __construct() {
parent::__construct();
}
public function handle() {}
}
Run Code Online (Sandbox Code Playgroud)
3)composer.json中的自动加载器看起来像这样
"autoload": {
"classmap": [
"database",
"app/Console/Commands"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
Run Code Online (Sandbox Code Playgroud)
4)然后我跑php artisan list,没有塞尔达
我在这里错过了什么?
你快到了!您已经完成了创建命令类所需的一切.但是,您仍然需要告诉应用程序它应该使用此命令类.
也就是说,在CLI应用程序内核文件(而不是Web应用程序的内核)文件中,您应该看到以下内容
#File: app/Console/Kernel.php
class Kernel extends ConsoleKernel
{
//...
protected $commands = [
\App\Console\Commands\Inspire::class,
];
//...
}
Run Code Online (Sandbox Code Playgroud)
一旦创建了命令(手动或通过make:console,您仍然需要将新的命令类(完整的PHP类名)添加到$commands内核文件的数组中.
这个
protected $commands = [
\App\Console\Commands\Inspire::class,
'\App\Console\Commands\Zelda',
];
Run Code Online (Sandbox Code Playgroud)
或这个
protected $commands = [
\App\Console\Commands\Inspire::class,
\App\Console\Commands\Zelda::class,
];
Run Code Online (Sandbox Code Playgroud)
应该让你到达你需要的地方(我不确定为什么Laravel 5.1的核心代码在class这里使用魔法常量)