장인 명령줄


Artisan 명령줄 소개

Artisan Command Line

소개

Artisan Laravel의 자체 명령줄 인터페이스로 Laravel 애플리케이션을 구축하는 데 도움이 되는 많은 명령을 제공합니다. 사용 가능한 모든 Artisan 명령어 목록을 보려면 list 명령어를 사용하세요. list 命令:

php artisan list

每个命令都包含了「帮助」 界面 ,它会显示和概述命令的可用参数及选项。只需要在命令前加上 help 即可查看命令帮助界面 :

php artisan help migrate

Tinker 命令 (REPL)

所有 Laravel 应用都包含了 Tinker,一个基于 PsySH 包提供支持的 REPL 。Tinker 让你可以在命令行中与你整个的 Laravel 应用进行交互 。 包括 Eloquent ORM、任务、事件等等。运行 Artisan 命令 tinker 进入 Tinker 环境:

php artisan tinker

你可以通过使用 vendor:publish

php artisan vendor:publish --provider="Laravel\Tinker\TinkerServiceProvider"

각 명령어에는 명령어에 사용 가능한 인수와 옵션을 표시하고 요약하는 도움말 인터페이스가 포함되어 있습니다. 명령 도움말 인터페이스를 보려면 명령 앞에 help를 추가하세요:
'commands' => [ 
   // App\Console\Commands\ExampleCommand::class,
   ],
🎜🎜
🎜< h3>Tinker Command(REPL)🎜모든 Laravel 애플리케이션에는 PsySH🎜 패키지로 구동되는 REPL인 Tinker가 포함되어 있습니다. Tinker를 사용하면 명령줄에서 전체 Laravel 애플리케이션과 상호 작용할 수 있습니다. Eloquent ORM, 작업, 이벤트 등이 포함됩니다. Artisan 명령 tinker를 실행하여 Tinker 환경으로 들어갑니다: 🎜
'dont_alias' => [ 
   App\User::class,
 ],
🎜 vendor:publish 명령을 사용하여 Tinker 구성 파일을 게시할 수 있습니다: 🎜
php artisan make:command SendEmails
🎜🎜

Command Whitelist

Tinker는 화이트리스트를 사용하여 쉘에서 실행할 수 있는 Artisan 명령을 결정합니다. 기본적으로 clear-compiled, down, env, inspire, migration, optimizeup 명령. 더 많은 화이트리스트 명령을 추가하려면 tinker.php 구성 파일의 commands 배열에 해당 명령을 추가할 수 있습니다: clear-compileddownenvinspiremigrateoptimize、和 up 命令。如果你想要添加更多的白名单命令,可以将它们添加到  tinker.php 配置文件中的 commands 数组里:

<?php
    namespace App\Console\Commands;
    use App\User;use App\DripEmailer;
    use Illuminate\Console\Command;
    class SendEmails extends Command{   
     /**
     * The name and signature of the console command.
     *
     * @var string
     */   
   protected $signature = 'email:send {user}';  
    /**
     * The console command description.
     *
     * @var string
     */   
    protected $description = 'Send drip e-mails to a user';    
     /**
     * Create a new command instance.
     *
     * @return void
     */  
   public function __construct()    {    
      parent::__construct();   
     }    
     /**
     * Execute the console command.
     *
     * @param  \App\DripEmailer  $drip
     * @return mixed
     */  
   public function handle(DripEmailer $drip)  
     {     
        $drip->send(User::find($this->argument('user')));  
      }
   }

黑名单别名

通常,Tinker 会在 Tinker 中根据你的需要自动为类添加别名。然而,你可能不希望为某些类添加别名。你可以在 tinker.php 配置文件中的 dont_alias 数组里列举这些类来完成此操作:

/**
 * Register the Closure based commands for the application.
 *
 * @return void
 */
 protected function commands(){ 
    require base_path('routes/console.php');
 }

编写命令

除 Artisan 提供的命令外,你还可以构建自己的自定义命令。 命令通常存储在 app/Console/Commands 目录中;不过,只要你的命令可以由 Composer 加载,你就可以自由选择自己的存储位置。

生成命令

要创建一个新的命令,可以使用 Artisan 命令 make:command。这个命令会在 app/Console/Commands 目录中创建一个新的命令类。 不必担心应用中不存在这个目录,因为它会在你第一次运行 Artisan 命令 make:command 时创建。生成的命令会包括所有命令中默认存在的属性和方法:

Artisan::command('build {project}', function ($project) { 
   $this->info("Building {$project}!");
});

命令结构

命令运行后,你应该先填写 signaturedescription 属性以便你在输入 php artisan list 时能够清楚知道用法。执行命令时会调用 handle 方法,你可以在这个方法中放置命令逻辑。

{tip}  为了代码更好的复用,最好保持你的控制台代码轻量并且能够延迟到应用服务中完成。在下面的例子中,我们将注入一个服务类来完成发送邮件的重任。

来看一个简单的例子。我们可以在 handle

use App\User;
use App\DripEmailer;Artisan::command('email:send {user}', function (DripEmailer $drip, $user) { 
   $drip->send(User::find($user));
});

블랙리스트 별칭일반적으로 Tinker는 필요에 따라 Tinker의 클래스에 별칭을 자동으로 추가합니다. 그러나 일부 클래스에는 별칭을 추가하고 싶지 않을 수도 있습니다. tinker.php 구성 파일의 dont_alias 배열에 다음 클래스를 열거하면 됩니다.

Artisan::command('build {project}', function ($project) {
    $this->info("Building {$project}!");
 })->describe('Build the project');
🎜 < div name="43428a" data-unique="43428a">🎜

명령어 작성

🎜Artisan에서 제공하는 명령 외에도 사용자 정의 명령을 직접 작성할 수도 있습니다. 명령은 일반적으로 app/Console/Commands 디렉터리에 저장됩니다. 그러나 Composer에서 명령을 로드할 수 있는 한 원하는 저장 위치를 ​​자유롭게 선택할 수 있습니다. 🎜🎜
🎜🎜
🎜

명령 생성

🎜새 명령을 생성하려면 Artisan을 사용할 수 있습니다 make:명령을 명령하세요. 이 명령은 app/Console/Commands 디렉터리에 새 명령 클래스를 생성합니다. 이 디렉터리는 Artisan 명령 make:command를 처음 실행할 때 생성되므로 애플리케이션에 존재하지 않는 디렉터리에 대해 걱정하지 마세요. 생성된 명령에는 모든 명령에 기본적으로 존재하는 속성과 메서드가 포함됩니다. 🎜
/**
 * The name and signature of the console command.
 *
 * @var string
 */
 protected $signature = 'email:send {user}';
🎜
🎜🎜
🎜

명령 구조

🎜명령을 실행한 후 php artisan 입력 시 명확하게 알 수 있도록 먼저 서명설명 속성을 ​​입력해야 합니다. 목록 사용법. 명령을 실행할 때 handle 메서드가 호출됩니다. 이 메서드에 명령 논리를 배치할 수 있습니다. 🎜
🎜{tip} 더 나은 코드 재사용을 위해서는 콘솔 코드를 가볍게 유지하고 애플리케이션 서비스 완료를 연기하는 것이 가장 좋습니다. 다음 예에서는 이메일 전송 작업을 완료하기 위해 서비스 클래스를 삽입합니다. 🎜
🎜간단한 예를 살펴보겠습니다. handle 메소드에 필요한 종속성을 주입할 수 있습니다. Laravel 서비스 컨테이너는 생성자에 유형 제약 조건이 있는 모든 종속성을 자동으로 주입합니다.🎜
// 可选参数...
email:send {user?}
// 带有默认值的可选参数...
email:send {user=foo}
🎜🎜🎜🎜🎜🎜

클로저 명령

클로저 기반 명령은 콘솔 명령을 정의하는 대신 클래스를 사용하는 방법을 제공합니다. 마찬가지로 클로저 라우팅은 컨트롤러의 대안이고 클로저 명령은 명령 클래스의 대안으로 생각할 수 있습니다. app/Console/Kernel.php 파일의 commands 메소드에서 Laravel은 routes/console.php 파일을 로드합니다:app/Console/Kernel.php 文件的 commands  方法中,Laravel 加载了 routes/console.php  file:

/**
 * 命令行的名称及签名。
 *
 * @var string
 */
 protected $signature = 'email:send {user} {--queue}';

虽然这个文件没有定义 HTTP 路由,但是它将基于控制台的入口点(路由)定义到了应用中。在这个文件,你可以使用 Artisan::command 方法定义所有的闭包路由。 command 方法接受两个参数:  命令名称 和一个接受命令参数及选项的闭包:

php artisan email:send 1 --queue

闭包绑定底层的命令实例,因为你可以访问所有能够在完整命令类中的所有辅助方法。

类型提示依赖

除了接收命令的参数和选项外,命令闭包也可以使用类型提示从 服务容器 中解析其他的依赖关系:

/**
 * 命令行的名称及签名。
 *
 * @var string
 */
 protected $signature = 'email:send {user} {--queue=}';

闭包命令描述

当你定义一个闭包命令,你应当使用 describe 方法来为命令添加描述。这个描述会在你运行 php artisan list 或者 php artisan help 命令时显示:

php artisan email:send 1 --queue=default

定义输出期望

在编写控制台命令时,通常是通过参数和选项来收集用户输入的。Laravel 可以通过 signature 属性非常方便的定义你期望用户输入的内容。signature 允许使用单一且可读性高,类似路由的语法定义命令的名称、参数和选项。

参数

所有用户提供的参数及选项都被包含在花括号中。在下面的例子中,这个命令定义了一个 必须的参数:  user:

email:send {user} {--queue=default}

你也可以创建可选参数,并定义参数的默认值:

email:send {user} {--Q|queue}

选项

选项,类似于参数,是用户输入的另一种格式。当命令行指定选项时,它们以两个连字符 ( -- ) 作为前缀。有两种类型的选项:接收值和不接收值。不接收值的选项就像是一个布尔值的「开关」。让我们看一下这种类型的选项的例子:

email:send {user*}

在这个例子中,可以在调用 Artisan 命令时指定 --queue 开关。如果 --queue 开关被传递,该选项的值为 true, 否则为 false

php artisan email:send foo bar

그러나 this 파일은 HTTP 경로를 정의하지 않지만 애플리케이션에 대한 콘솔 기반 진입점(경로)을 정의합니다. 이 파일에서 Artisan::command 메소드를 사용하여 모든 클로저 경로를 정의할 수 있습니다. command 메소드는 두 개의 매개변수를 허용합니다: 명령 이름

및 명령 매개변수와 옵션을 허용하는 클로저:

email:send {user} {--id=*}
php artisan email:send --id=1 --id=2
클로저는 기본 Command를 바인딩합니다. 전체 명령 클래스에서 사용할 수 있는 모든 도우미 메서드에 액세스할 수 있기 때문입니다.

유형 힌트 종속성

명령의 매개변수와 옵션을 받는 것 외에도 명령 클로저를 다음에서 확인할 수도 있습니다. 유형 힌트를 사용하는 서비스 컨테이너 기타 종속성: 🎜
/**
 * 命令行的名称及签名。
 *
 * @var string
 */
 protected $signature = 'email:send
                 {user : The ID of the user}
                 {--queue= : Whether the job should be queued}';
🎜

클로저 명령 설명

🎜클로저 명령을 정의할 때 를 사용해야 합니다. 설명 메소드를 사용하면 명령에 설명을 추가할 수 있습니다. 이 설명은 php artisan list 또는 php artisan help 명령을 실행할 때 표시됩니다: 🎜
/**
 * 执行命令。
 *
 * @return mixed
 */
 public function handle(){
     $userId = $this->argument('user');    
     //
 }
🎜🎜🎜< div name="b603e9" data-unique="b603e9">🎜

출력 기대값 정의

🎜콘솔 명령을 작성할 때 사용자 입력은 일반적으로 매개변수와 옵션을 통해 수집됩니다. Laravel을 사용하면 signature 속성을 ​​통해 사용자가 입력할 것으로 예상되는 내용을 정의하는 것이 매우 편리합니다. 서명을 사용하면 읽기 쉬운 단일 라우팅 유사 구문을 사용하여 명령의 이름, 매개변수 및 옵션을 정의할 수 있습니다. 🎜🎜
🎜🎜
🎜🎜Parameters🎜🎜모든 사용자 제공 매개변수와 옵션은 중괄호로 묶입니다. 다음 예에서 이 명령은 필수 매개변수를 정의합니다: user:🎜
$arguments = $this->arguments();
🎜선택적 매개변수를 생성하고 해당 기본값을 정의할 수도 있습니다:🎜
// 获取一个指定的选项值
$queueName = $this->option('queue');
// 获取所有的选项值
$options = $this->options();
🎜
🎜🎜
🎜🎜options🎜🎜매개변수와 유사한 옵션은 사용자 입력을 위한 또 다른 형식입니다. 명령줄에서 옵션을 지정하면 앞에 두 개의 하이픈( -- )이 붙습니다. 옵션에는 값을 받는 것과 값을 받지 않는 것의 두 가지 유형이 있습니다. 값을 허용하지 않는 옵션은 부울 "스위치"와 같습니다. 이러한 옵션 유형의 예를 살펴보겠습니다. 🎜
/**
 * 执行命令。
 *
 * @return mixed
 */
 public function handle(){
     $name = $this->ask('What is your name?');
 }
🎜이 예에서는 Artisan 명령을 호출할 때 --queue 스위치를 지정할 수 있습니다. 이 옵션의 값은 --queue 스위치가 전달되면 true이고, 그렇지 않으면 false입니다. 🎜
$password = $this->secret('What is the password?');
🎜🎜🎜🎜🎜🎜

값이 있는 옵션

다음으로 값이 있는 옵션을 살펴보겠습니다. 사용자가 옵션 값을 지정하도록 하려면 옵션 이름 끝에 접미사로 등호 =를 추가해야 합니다. = 作为的后缀:

if ($this->confirm('Do you wish to continue?')) {
    //
 }

在这个例子中, 用户可以传递该选项的值,如下所示:

$name = $this->anticipate('What is your name?', ['Taylor', 'Dayle']);

你也可以通过在选项名称后面指定默认值来设定该选项的默认值。如果用户没有传递选项值,将使用设定的默认值:

$name = $this->choice('What is your name?', ['Taylor', 'Dayle'], $defaultIndex);

选项简写

要在定义选项时指定简写,你可以在选项名称前指定它,并用 | 分隔符将简写与完整选项名称分隔开:

/**
 * 执行命令。
 *
 * @return mixed
 */
 public function handle(){
     $this->info('Display this on the screen');
 }

输入数组

如果你想定义接收数组输入的参数或选项,你可以使用 * 符号。首先,我们先看一个数组参数的实例:

$this->error('Something went wrong!');

调用此方法时,该 user 参数的输入参数可按顺序传递给命令行。例如,以下命令会设置 user 的值为 ['foo', 'bar'] :

$this->line('Display this on the screen');

当定义接收数组的选项时,传递给命令行的每个选项值都应以选项名称为前缀:

$headers = ['Name', 'Email'];
$users = App\User::all(['name', 'email'])->toArray();
$this->table($headers, $users);

输入说明

你可以通过使用冒号来为参数和选项添加说明,并使其将他们隔开。如果你需要一点额外的空间来定义你的命令,可以随意分开在多个行里:

$users = App\User::all();
$bar = $this->output->createProgressBar(count($users));
$bar->start();foreach ($users as $user) { 
   $this->performTask($user);    
   $bar->advance();
}$bar->finish();

Command I/O

获取输入

在命令执行时,显然你需要获取命令接收到的参数和选项的值。你可以用 argument 和 option 方法来达到目的:

/**
 * 注册应用的命令
 *
 * @return void
 */
 protected function commands(){ 
    $this->load(__DIR__.'/Commands');    
    $this->load(__DIR__.'/MoreCommands'); 
   // ...
}

如果你想所有的参数以 array 数组获取,可以调用 arguments 方法:

protected $commands = [ 
   Commands\SendEmails::class
  ];

和获取参数类似,option 方法可以非常容易的获取选项的值。要将所有的选项以数组获取,使用 options 方法:

Route::get('/foo', function () { 
   $exitCode = Artisan::call('email:send', [  
         'user' => 1,
          '--queue' => 'default' 
       ]);  
     //
 });

如果参数或选项不存在,则返回 null

Artisan::call('email:send 1 --queue=default');

이 예에서 사용자는 다음과 같이 옵션 값을 전달할 수 있습니다. 표시된:

Route::get('/foo', function () { 
   Artisan::queue('email:send', [   
        'user' => 1,
         '--queue' => 'default' 
        ]); 
      //
});
옵션 이름 뒤에 기본값을 지정하여 옵션의 기본값을 설정할 수도 있습니다. 사용자가 옵션 값을 전달하지 않으면 설정된 기본값이 사용됩니다:
Artisan::queue('email:send', [ 
   'user' => 1, 
   '--queue' => 'default'
 ])->onConnection('redis')->onQueue('commands');

🎜🎜 옵션 약어🎜 🎜옵션을 정의할 때 약어를 지정하려면 옵션 이름 앞에 약어를 지정하고 | 구분 기호를 사용하여 전체 옵션 이름에서 약어를 구분할 수 있습니다: 🎜
Route::get('/foo', function () { 
   $exitCode = Artisan::call('email:send', [    
       'user' => 1,
        '--id' => [5, 13]   
      ]);
 });
🎜
🎜🎜
🎜

입력 배열

🎜배열 입력을 받는 매개변수나 옵션을 정의하려면 < 코드>*< /code> 기호. 먼저 배열 매개변수의 예를 살펴보겠습니다. 🎜
$exitCode = Artisan::call('migrate:refresh', [
    '--force' => true,
  ]);
🎜 이 메서드를 호출하면 user 매개변수의 입력 매개변수가 순서대로 명령줄에 전달될 수 있습니다. 예를 들어 다음 명령은 user 값을 ['foo', 'bar']로 설정합니다. 🎜
/**
 * 执行控制台命令
 *
 * @return mixed
 */
 public function handle(){ 
    $this->call('email:send', [   
         'user' => 1, 
         '--queue' => 'default' 
      ]); 
      //
 }
🎜배열을 수신하는 옵션을 정의할 때 명령줄에 전달된 각 옵션 값은 다음과 같습니다. 시작 옵션 이름에는 🎜
$this->callSilent('email:send', [ 
   'user' => 1, 
   '--queue' => 'default'
 ]);
🎜
🎜🎜
🎜

설명 입력

🎜You라는 접두사가 붙습니다. 매개변수와 옵션을 설명하고 구분하기 위해 콜론을 사용하면 됩니다. 명령을 정의하기 위해 약간의 추가 공간이 필요한 경우 자유롭게 여러 줄로 나누어 사용하세요. 🎜rrreee🎜
🎜🎜
🎜

명령 I/O

🎜
🎜🎜
🎜

입력 가져오기🎜명령이 실행되면 당연히 명령에서 받은 매개변수와 옵션의 값을 가져와야 합니다. 이를 달성하려면 argumentoption 메소드를 사용할 수 있습니다. 🎜rrreee🎜모든 매개변수를 배열 배열로 가져오려면 인수 메서드를 호출할 수 있습니다: 🎜rrreee🎜매개변수 가져오기와 유사하게 옵션 메서드는 옵션 값을 쉽게 가져올 수 있습니다. 모든 옵션을 배열로 가져오려면 options 메서드를 사용하세요. 🎜rrreee🎜매개변수나 옵션이 없으면 null을 반환하세요. 🎜🎜🎜🎜🎜🎜🎜

대화형 입력

출력을 표시하는 것 외에도 명령이 실행되는 동안 사용자에게 입력을 제공하도록 요청할 수도 있습니다. ask 메소드는 사용자에게 입력하라는 메시지를 표시하고 이를 수신한 다음 사용자의 입력이 명령에 전달됩니다: ask 方法将提示用户输入并接收,然后用户的输入将会传入你的命令:

rrreee

secret 方法和 ask 方法类似,但当用户在控制台输入时他们的输入内容是不可见的。这个方法适用于需要用户输入像密码这样的敏感信息的时候:

rrreee

请求确认

如果你想要寻求用户确认一些简单的信息,你可以使用 confirm 方法。默认情况下,该方法将返回 false 。但如果用户在回复中输入 y 或者 yes 则会返回 true

rrreee

自动补全

anticipate 方法可用于为可能的选择提供自动补全功能。用户仍然可以忽略自动补全的提示,作任意回答:

rrreee

多重选择

如果你要给用户提供一些预设的选择,可以使用 choice 方法。你也可以设置默认值的索引,用以应对用户没有选择的情景:

rrreee

编写输出

可以使用 lineinfocommentquestionerror 方法来将输出发送到终端。每个方法都使用适当的 ANSI 颜色表明其目的。例如,让我们向用户显示一些普通信息,通常来说,最好使用 info 方法,它会在控制台将输出的内容显示为绿色:

rrreee

显示错误信息, 使用 error 方法。 错误信息则会显示为红色:

rrreee

如果你想在控制台显示无颜色设置的输出,请使用 line 方法:

rrreee

表格布局

对于多行列数据的格式化输出,tablerrreee

secret 메소드 및 ask< /code> 메소드 유사하지만 사용자가 콘솔에 입력할 때 해당 입력이 표시되지 않습니다. 이 방법은 사용자가 비밀번호와 같은 민감한 정보를 입력해야 하는 경우에 적합합니다.
rrreee

요청 확인

사용자에게 간단한 확인을 요청하려는 경우 정보를 확인하려면 confirm 메소드를 사용할 수 있습니다. 기본적으로 이 메서드는 false 를 반환합니다. 그러나 사용자가 응답에 y 또는 yes를 입력하면 true가 반환됩니다.

rrreee

Autocomplete

anticipate 메소드를 사용하여 가능한 선택에 대해 자동 완성을 제공할 수 있습니다. 사용자는 자동 완성 프롬프트를 무시하고 원하는 답변을 제공할 수 있습니다.

rrreee

다중 선택

사용자에게 미리 설정된 선택 항목을 제공하려는 경우 다음을 수행할 수 있습니다. 선택 방법을 사용하세요. 사용자에게 선택의 여지가 없는 상황을 처리하기 위해 기본값의 인덱스를 설정할 수도 있습니다:
rrreee🎜🎜🎜
🎜🎜 출력🎜🎜을 작성하려면 line, info, comment, questionerror 출력을 터미널로 보내는 방법입니다. 각 메서드는 적절한 ANSI 색상을 사용하여 해당 목적을 나타냅니다. 예를 들어, 사용자에게 몇 가지 일반 정보를 표시해 보겠습니다. 일반적으로 콘솔에 출력 내용을 녹색으로 표시하는 info 메서드를 사용하는 것이 가장 좋습니다. 🎜rrreee🎜오류를 표시하려면 정보를 보려면 < code>error 메소드를 사용하세요. 오류 메시지는 빨간색으로 표시됩니다: 🎜rrreee🎜 콘솔에서 색상 설정 없이 출력을 표시하려면 line 메소드를 사용하십시오: 🎜rrreee
🎜🎜테이블 레이아웃🎜🎜다중 열 데이터의 형식화된 출력의 경우 table 메서드를 사용하는 것이 더 쉽습니다. 들어오는 테이블 헤더와 행 데이터를 기반으로 너비와 높이를 동적으로 계산합니다. 🎜rrreee🎜🎜🎜진행률 표시줄🎜🎜시간이 많이 걸리는 작업의 경우 진행률을 표시하는 것이 매우 필요합니다. 출력 개체를 사용하여 진행률 표시줄을 생성, 로드 및 중지합니다. 먼저 작업의 총 단계 수를 정의한 다음 작업이 실행될 때마다 진행률 표시줄을 로드합니다. 🎜rrreee🎜자세한 고급 사용법은 🎜Symfony 진행률 표시줄 구성 요소 문서🎜를 참조하세요. 🎜🎜🎜🎜🎜🎜🎜

명령 등록

app/Console/Commands 디렉터리에 있는 명령이 등록됩니다. 이는 콘솔 커널의 commands 메서드가 load. 실제로 load를 원하는 대로 호출하여 다른 디렉터리에 있는 Artisan 명령을 검색할 수 있습니다: app/Console/Commands 目录下的命令都会被注册,这是由于控制台内核的 commands 方法调用了 load。实际上,可随意调用 load 来扫描其他目录下的 Artisan 命令:

rrreee

也可以在 app/Console/Kernel.php 文件的 $commands 属性中手动注册命令的类名。Artisan 启动时,这个属性列出的命令都将由 服务容器 解析并通过 Artisan 进行注册:

rrreee

程序调用命令

有时需要在 CLI 之外执行 Artisan 命令,例如,在路由或控制器里触发 Artisan 命令。要实现调用,可以使用 Artisan 门面的 call 方法。call 方法的第一个参数接受命令名,第二个参数接受数组形式的命令参数。退出码将返回:

rrreee

另外,你可以将整个 Artisan 命令作为字符串传递给 call 方法:

rrreee

Artisan 门面的 queue 方法可以将 Artisan 命令队列化,交由 队列工作进程 进行后台处理。使用此方法之前,务必配置好队列以及运行队列监听器:

rrreee

你也可以指定 Artisan 命令派发的连接或任务:

rrreee

传递数组值

如果定义了接受数组的选项,可以直接传递数组到该选项:

rrreee

传递布尔值

需要指定没有选项值的选项时,例如,migrate:refresh 命令的 --force 选项,就可以传入 truefalse

rrreee

命令的互相调用

call 方法可以实现调用其它 Artisan 命令。call 方法接受命令名和数组形式的选项:

rrreee

如果要抑制控制台命令的所有输出,可以使用 callSilent 方法。callSilent 的使用方法同 callrrreee

app/Console/Kernel.php$commands를 사용할 수도 있습니다. code> 파일 속성에 수동으로 등록된 명령의 클래스 이름입니다. Artisan이 시작되면 이 속성에 나열된 명령은 서비스 컨테이너에 의해 구문 분석되고 Artisan에 등록됩니다:
rrreee
🎜프로그램 호출 명령🎜🎜때때로 CLI 외부에서 Artisan 명령을 실행해야 하는 경우가 있습니다(예: 라우터나 컨트롤러에서 Artisan 명령을 트리거). 호출을 구현하려면 Artisan 파사드의 call 메소드를 사용할 수 있습니다. call 메소드의 첫 번째 매개변수는 명령 이름을 받아들이고, 두 번째 매개변수는 배열 형태의 명령 매개변수를 받아들입니다. 종료 코드가 반환됩니다: 🎜rrreee🎜또는 전체 Artisan 명령을 문자열로 call 메소드에 전달할 수 있습니다: 🎜rrreee🎜Artisan 파사드의 메소드는 Artisan 명령을 대기열에 추가하고 백그라운드 처리를 위해 대기열 작업자 프로세스에 전달할 수 있습니다. 이 방법을 사용하기 전에 대기열을 구성하고 대기열 리스너를 실행해야 합니다: 🎜rrreee🎜 Artisan 명령으로 디스패치된 연결이나 작업을 지정할 수도 있습니다: 🎜rrreee
🎜

배열 값 전달

🎜배열을 허용하는 옵션이 정의된 경우 배열을 옵션에 직접 전달할 수 있습니다: 🎜rrreee