Barisan arahan artisan


Pengenalan kepada Artisan Command Line

Pengenalan

Artisan ialah antara muka baris arahan Laravel sendiri Ia menyediakan banyak arahan untuk membantu anda membina aplikasi Laravel. Untuk melihat senarai semua perintah Artisan yang tersedia, gunakan perintah list:
php artisan list

Setiap arahan termasuk antara muka Bantuan yang memaparkan dan meringkaskan hujah dan pilihan yang tersedia untuk arahan itu. Cuma tambah help sebelum arahan untuk melihat antara muka bantuan arahan:

php artisan help migrate

list 命令:

php artisan tinker

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

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

Tinker 命令 (REPL)

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

'commands' => [ 
   // App\Console\Commands\ExampleCommand::class,
   ],

你可以通过使用 vendor:publish

< h3>Perintah Tinker (REPL)
Semua aplikasi Laravel termasuk Tinker, REPL yang dikuasakan oleh pakej PsySH🎜. Tinker membolehkan anda berinteraksi dengan keseluruhan aplikasi Laravel anda dari baris arahan. Termasuk ORM Fasih, tugas, acara dan banyak lagi. Jalankan perintah Artisan tinker untuk memasuki persekitaran Tinker: 🎜
'dont_alias' => [ 
   App\User::class,
 ],
🎜 Anda boleh menerbitkan fail konfigurasi Tinker dengan menggunakan perintah vendor:publish: 🎜
php artisan make:command SendEmails
🎜🎜

Command Whitelist

Tinker menggunakan senarai putih untuk menentukan arahan Artisan yang dibenarkan untuk dijalankan dalam shell. Secara lalai, anda boleh menjalankan clear-compiled, down, env, inspire, migrate, optimumkan dan up. Jika anda ingin menambah lebih banyak arahan senarai putih, anda boleh menambahkannya pada tatasusunan commands dalam fail konfigurasi tinker.php: 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));
});

Alias ​​Senarai HitamBiasanya, Tinker akan menambah alias secara automatik pada kelas dalam Tinker berdasarkan keperluan anda. Walau bagaimanapun, anda mungkin tidak mahu menambah alias pada beberapa kelas. Anda boleh melakukan ini dengan menyenaraikan kelas ini dalam tatasusunan dont_alias dalam fail konfigurasi tinker.php:

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

Menulis arahan

🎜Selain arahan yang disediakan oleh Artisan, anda juga boleh membina arahan tersuai anda sendiri. Perintah biasanya disimpan dalam direktori app/Console/Commands namun, selagi arahan anda boleh dimuatkan oleh Komposer, anda bebas memilih lokasi storan anda sendiri. 🎜🎜
🎜🎜
🎜

Menjana arahan

🎜Untuk mencipta arahan baharu, anda boleh menggunakan Artisan Perintah make:command. Perintah ini akan mencipta kelas arahan baharu dalam direktori app/Console/Commands. Jangan bimbang tentang direktori ini tidak wujud dalam aplikasi anda, kerana ia akan dibuat pada kali pertama anda menjalankan perintah Artisan make:command. Perintah yang dijana akan termasuk sifat dan kaedah yang wujud secara lalai dalam semua arahan: 🎜
/**
 * The name and signature of the console command.
 *
 * @var string
 */
 protected $signature = 'email:send {user}';
🎜
🎜🎜
🎜

Struktur perintah

🎜Selepas menjalankan arahan, anda perlu mengisi atribut tandatangan dan description dahulu supaya anda dapat mengetahui dengan jelas apabila memasukkan php artisan senarai penggunaan. Kaedah handle akan dipanggil semasa melaksanakan arahan Anda boleh meletakkan logik arahan dalam kaedah ini. 🎜
🎜{tip} Untuk penggunaan semula kod yang lebih baik, sebaiknya pastikan kod konsol anda ringan dan menangguhkan penyiapan kepada perkhidmatan aplikasi. Dalam contoh berikut, kami akan menyuntik kelas perkhidmatan untuk menyelesaikan tugas menghantar e-mel. 🎜
🎜Mari kita lihat contoh mudah. Kami boleh menyuntik sebarang kebergantungan yang kami perlukan dalam kaedah handle. Bekas perkhidmatan Laravel secara automatik akan menyuntik semua kebergantungan dengan kekangan jenis dalam pembina:🎜
// 可选参数...
email:send {user?}
// 带有默认值的可选参数...
email:send {user=foo}
🎜🎜🎜🎜🎜🎜

Arahan Penutupan

Arahan berasaskan penutupan menyediakan cara untuk menggunakan kelas dan bukannya mentakrifkan arahan konsol. Dengan cara yang sama, penghalaan penutupan adalah alternatif kepada pengawal, dan arahan penutupan boleh dianggap sebagai alternatif kepada kelas arahan. Dalam kaedah commands fail app/Console/Kernel.php, Laravel memuatkan fail 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

Walaupun ini Fail tidak mentakrifkan laluan HTTP, tetapi ia mentakrifkan titik masuk (laluan) berasaskan konsol ke dalam aplikasi. Dalam fail ini, anda boleh menentukan semua laluan penutupan menggunakan kaedah Artisan::command. Kaedah command menerima dua parameter: Nama arahan

dan penutupan yang menerima parameter dan pilihan arahan:

email:send {user} {--id=*}
php artisan email:send --id=1 --id=2
Penutupan mengikat Perintah asas instance kerana anda mempunyai akses kepada semua kaedah pembantu yang tersedia dalam kelas arahan penuh.

Kebergantungan yang dibayangkan jenis

Selain menerima parameter dan pilihan arahan, penutupan arahan juga boleh diselesaikan daripada bekas perkhidmatan menggunakan pembayang jenis Kebergantungan lain: 🎜
/**
 * 命令行的名称及签名。
 *
 * @var string
 */
 protected $signature = 'email:send
                 {user : The ID of the user}
                 {--queue= : Whether the job should be queued}';
🎜

Penerangan arahan penutupan

🎜Apabila anda mentakrifkan arahan penutupan, anda harus menggunakan huraikan kaedah untuk menambah penerangan pada arahan. Penerangan ini akan dipaparkan apabila anda menjalankan perintah php artisan list atau php artisan help: 🎜
/**
 * 执行命令。
 *
 * @return mixed
 */
 public function handle(){
     $userId = $this->argument('user');    
     //
 }
🎜🎜🎜< div name="b603e9" data-unique="b603e9">🎜

Tentukan jangkaan output

🎜Apabila menulis arahan konsol, input pengguna biasanya dikumpul melalui parameter dan pilihan. Laravel menjadikannya sangat mudah untuk mentakrifkan perkara yang anda harapkan pengguna masukkan melalui atribut signature. tandatangan membolehkan anda mentakrifkan nama perintah, parameter dan pilihan menggunakan sintaks tunggal, boleh dibaca, seperti laluan. 🎜🎜
🎜🎜
🎜🎜Parameter🎜🎜Semua parameter dan pilihan yang dibekalkan pengguna disertakan dalam pendakap kerinting. Dalam contoh berikut, arahan ini mentakrifkan parameter diperlukan: pengguna:🎜
$arguments = $this->arguments();
🎜Anda juga boleh mencipta parameter pilihan dan menentukan nilai lalainya:🎜
// 获取一个指定的选项值
$queueName = $this->option('queue');
// 获取所有的选项值
$options = $this->options();
🎜
🎜🎜
🎜🎜options🎜🎜Pilihan, serupa dengan parameter, ialah format lain untuk input pengguna. Apabila pilihan ditentukan pada baris arahan, ia diawali dengan dua sempang ( -- ). Terdapat dua jenis pilihan: menerima nilai dan tidak menerima nilai. Pilihan yang tidak menerima nilai adalah seperti "suis" boolean. Mari lihat contoh pilihan jenis ini: 🎜
/**
 * 执行命令。
 *
 * @return mixed
 */
 public function handle(){
     $name = $this->ask('What is your name?');
 }
🎜Dalam contoh ini, suis --queue boleh ditentukan apabila memanggil arahan Artisan. Nilai pilihan ini adalah true jika suis --queue diluluskan, false jika tidak: 🎜
$password = $this->secret('What is the password?');
🎜🎜🎜🎜🎜🎜

Pilihan dengan nilai

Seterusnya, mari lihat pilihan dengan nilai. Jika anda mahu pengguna perlu menentukan nilai untuk pilihan, anda perlu menambahkan tanda sama = sebagai akhiran pada akhir nama pilihan: = 作为的后缀:

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');

Dalam contoh ini, pengguna boleh melepasi nilai pilihan seperti berikut Ditunjukkan:

Route::get('/foo', function () { 
   Artisan::queue('email:send', [   
        'user' => 1,
         '--queue' => 'default' 
        ]); 
      //
});
Anda juga boleh menetapkan nilai lalai untuk pilihan dengan menyatakan nilai lalai selepas nama pilihan. Jika pengguna tidak melepasi nilai pilihan, nilai lalai yang ditetapkan akan digunakan:
Artisan::queue('email:send', [ 
   'user' => 1, 
   '--queue' => 'default'
 ])->onConnection('redis')->onQueue('commands');

🎜🎜 Singkatan pilihan🎜 🎜Untuk menentukan singkatan semasa mentakrifkan pilihan, anda boleh menentukannya sebelum nama pilihan dan memisahkan singkatan daripada nama pilihan penuh dengan pembatas |: 🎜
Route::get('/foo', function () { 
   $exitCode = Artisan::call('email:send', [    
       'user' => 1,
        '--id' => [5, 13]   
      ]);
 });
🎜
🎜🎜
🎜

Input array

🎜Jika anda ingin menentukan parameter atau pilihan yang menerima input tatasusunan, anda boleh menggunakan < kod>*< /kod> simbol. Mula-mula, mari lihat contoh parameter tatasusunan: 🎜
$exitCode = Artisan::call('migrate:refresh', [
    '--force' => true,
  ]);
🎜Apabila memanggil kaedah ini, parameter input parameter user boleh dihantar ke baris arahan mengikut urutan. Sebagai contoh, arahan berikut akan menetapkan nilai pengguna kepada ['foo', 'bar']: 🎜
/**
 * 执行控制台命令
 *
 * @return mixed
 */
 public function handle(){ 
    $this->call('email:send', [   
         'user' => 1, 
         '--queue' => 'default' 
      ]); 
      //
 }
🎜Apabila mentakrifkan pilihan yang menerima tatasusunan, setiap nilai pilihan yang dihantar ke baris arahan harus mulakan dengan Nama pilihan diawali dengan: 🎜
$this->callSilent('email:send', [ 
   'user' => 1, 
   '--queue' => 'default'
 ]);
🎜
🎜🎜
🎜

Input descriptions

🎜Anda boleh melakukan ini dengan menggunakan Gunakan titik bertindih untuk menerangkan dan memisahkan parameter dan pilihan. Jika anda memerlukan sedikit ruang tambahan untuk mentakrifkan perintah anda, jangan ragu untuk memecahkannya pada berbilang baris: 🎜rrreee🎜
🎜🎜
🎜

I/O Arahan

🎜
🎜🎜
🎜

Mendapatkan input🎜Apabila arahan dilaksanakan, jelas sekali anda perlu mendapatkan nilai parameter dan pilihan yang diterima oleh arahan itu. Anda boleh menggunakan kaedah argument dan option untuk mencapai ini: 🎜rrreee🎜Jika anda mahu semua parameter diperolehi sebagai tatasusunan array, anda boleh memanggil kaedah arguments: 🎜rrreee🎜Sama seperti mendapatkan parameter, kaedah option boleh mendapatkan nilai pilihan dengan mudah. Untuk mendapatkan semua pilihan sebagai tatasusunan, gunakan kaedah options: 🎜rrreee🎜Jika parameter atau pilihan tidak wujud, kembalikan null . 🎜🎜🎜🎜🎜🎜🎜

Input Interaktif

Selain memaparkan output, anda juga boleh meminta pengguna memberikan input semasa arahan itu dilaksanakan. Kaedah ask akan menggesa pengguna untuk input dan menerimanya, dan kemudian input pengguna akan dihantar ke dalam arahan anda: ask 方法将提示用户输入并接收,然后用户的输入将会传入你的命令:

rrreee

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

rrreee

请求确认

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

rrreee

自动补全

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

rrreee

多重选择

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

rrreee

编写输出

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

rrreee

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

rrreee

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

rrreee

表格布局

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

rahsia kaedah dan ask< /code> kaedah Serupa, tetapi apabila pengguna menaip dalam konsol input mereka tidak kelihatan. Kaedah ini sesuai apabila pengguna perlu memasukkan maklumat sensitif seperti kata laluan:
rrreee

Minta pengesahan

Jika anda ingin meminta pengguna mengesahkan beberapa perkara mudah maklumat , anda boleh menggunakan kaedah confirm. Secara lalai, kaedah ini akan mengembalikan false . Tetapi jika pengguna memasukkan y atau ya dalam balasan, true akan dikembalikan.

rrreee

Autolengkap

Kaedah jangka
boleh digunakan untuk menyediakan autolengkap untuk pilihan yang mungkin. Pengguna masih boleh mengabaikan gesaan autolengkap dan memberikan sebarang jawapan:

rrreee

Pelbagai pilihan

Jika anda ingin memberikan pengguna beberapa pilihan pratetap, anda boleh Gunakan kaedah choice. Anda juga boleh menetapkan indeks nilai lalai untuk menangani situasi di mana pengguna tidak mempunyai pilihan:
rrreee🎜🎜🎜
🎜🎜 Untuk menulis output🎜🎜 anda boleh menggunakan baris, maklumat, ulasan, soalan dan ralat Kaedah untuk menghantar output ke terminal. Setiap kaedah menggunakan warna ANSI yang sesuai untuk menunjukkan tujuannya. Sebagai contoh, marilah kami memaparkan beberapa maklumat umum kepada pengguna Secara umumnya, sebaiknya gunakan kaedah info, yang akan memaparkan kandungan output dalam warna hijau pada konsol: 🎜rrreee🎜Untuk memaparkan ralat. maklumat, gunakan kaedah < code>error. Mesej ralat akan dipaparkan dalam warna merah: 🎜rrreee🎜 Jika anda ingin memaparkan output tanpa tetapan warna dalam konsol, sila gunakan kaedah line: 🎜rrreee
🎜🎜Susun atur jadual🎜🎜Untuk output berformat data berbilang lajur, kaedah jadual lebih mudah dikendalikan. Berdasarkan pengepala jadual dan data baris yang masuk, ia akan mengira lebar dan ketinggian secara dinamik: 🎜rrreee🎜🎜🎜Bar kemajuan🎜🎜Untuk tugasan yang memakan masa, adalah sangat perlu untuk menggesa kemajuan. Gunakan objek output untuk mencipta, memuatkan dan menghentikan bar kemajuan. Mula-mula, takrifkan jumlah langkah untuk tugasan, dan kemudian muatkan bar kemajuan setiap kali tugasan dilaksanakan: 🎜rrreee🎜Lihat 🎜Symfony Progress Bar komponen dokumentasi🎜 untuk penggunaan yang lebih lanjut. 🎜🎜🎜🎜🎜🎜🎜

Daftar arahan

Perintah dalam direktori app/Console/Commands akan didaftarkan Ini kerana kaedah commands kernel konsol memanggil load. Malah, anda boleh memanggil load sesuka hati untuk mengimbas arahan Artisan dalam direktori lain: 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

Anda juga boleh menggunakan $commands dalam app/Console/Kernel.php fail Nama kelas arahan yang didaftarkan secara manual dalam atribut. Apabila Artisan bermula, arahan yang disenaraikan dalam atribut ini akan dihuraikan oleh bekas perkhidmatan dan didaftarkan dengan Artisan:
rrreee
🎜Arahan panggilan program🎜🎜Kadangkala perlu melaksanakan perintah Artisan di luar CLI, contohnya, mencetuskan arahan Artisan dalam penghala atau pengawal. Untuk melaksanakan panggilan, anda boleh menggunakan kaedah panggilan fasad Artisan. Parameter pertama kaedah call menerima nama arahan, dan parameter kedua menerima parameter arahan dalam bentuk tatasusunan. Kod keluar akan dikembalikan: 🎜rrreee🎜Sebagai alternatif, anda boleh menghantar keseluruhan perintah Artisan sebagai rentetan ke kaedah call: 🎜rrreee🎜 Artisan baris gilir facade kaedah boleh beratur perintah Artisan dan menyerahkannya kepada proses pekerja beratur untuk pemprosesan latar belakang. Sebelum menggunakan kaedah ini, pastikan anda mengkonfigurasi baris gilir dan jalankan pendengar baris gilir: 🎜rrreee🎜 Anda juga boleh menentukan sambungan atau tugasan yang dihantar oleh arahan Artisan: 🎜rrreee
🎜

Luluskan nilai tatasusunan

🎜Jika pilihan yang menerima tatasusunan ditentukan, anda boleh menghantar tatasusunan terus ke pilihan: 🎜rrreee