Rumah >rangka kerja php >Laravel >Mari bercakap tentang Laravel menjalankan skrip baris arahan
Artikel ini membawa anda pengetahuan yang berkaitan tentang Laravel, yang terutamanya memperkenalkan isu yang berkaitan dengan menjalankan skrip baris arahan Terdapat direktori berasingan dalam Laravel, iaitu direktori Konsol . Mari kita lihat bersama-sama, saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: Bermula dengan Laravel
Kami melihat bahawa terdapat direktori berasingan dalam Laravel, iaitu direktori Konsol . Ia digunakan untuk menyimpan fail skrip. Fail skrip ini secara amnya merujuk kepada skrip baris arahan yang kami laksanakan melalui arahan php, yang mempunyai fungsi sedemikian dalam banyak rangka kerja. Untuk pembangunan aplikasi moden, beberapa fungsi yang memakan masa seperti statistik data, eksport data, pemprosesan baris gilir dan beberapa program larian bahagian belakang automatik perlu dilaksanakan menggunakan skrip baris arahan ini.
Dalam direktori rangka kerja semasa, kami melaksanakan php artisan dalam direktori akar, dan anda boleh melihat maklumat bantuan baris arahan Berikut ialah senarai semua Skrip baris Perintah sedia ada. Dalam artikel pertama, kami bersentuhan dengan dua daripada arahan ini.
# php artisan key:generate # php artisan serve
Salah satu fungsinya ialah menjana Kunci unik yang perlu digunakan untuk cache yang disulitkan, dsb., dan satu lagi adalah untuk menjalankan pelayan ringkas yang disertakan bersamanya. Kita boleh melihat daripada nama skrip bahawa skrip boleh dipisahkan oleh :, dan titik bertindih didahului oleh kategori besar, seperti cache:xxx related dan make:xxx related. Cache berkaitan dengan memproses beberapa maklumat cache, manakala make berkaitan dengan mencipta beberapa fail yang kami perlukan Contohnya, untuk membuat pengawal, anda boleh menggunakan make:controller, dan untuk mencipta model data, anda boleh menggunakan make:model.
Mengenai skrip terbina dalam lalai ini, kami akan mengetahui tentangnya apabila kami mempelajari kandungan yang berkaitan.
Sesuaikan skrip adalah sangat mudah. Kita boleh menggunakan arahan make:command untuk menjana skrip baris arahan.
# php artisan make:command test1 Console command created successfully.
Pada masa ini, fail test1.php akan muncul dalam direktori app/Console/Commands. Buka fail ini, kita perlu membuat beberapa pengubahsuaian.
/** * The name and signature of the console command. * * @var string */ protected $signature = 'command:name'; /** * The console command description. * * @var string */ protected $description = 'Command description';
tandatangan digunakan untuk menetapkan nama skrip semasa dan perihalan digunakan untuk mentakrifkan perihalan ulasan skrip. Di manakah mereka digunakan? Sebenarnya, tandatangan adalah nama yang perlu kita gunakan semasa menjalankan skrip ini melalui php artisan. Sebagai contoh, jika kita melaksanakan php artisan secara langsung sekarang, kita akan melihat skrip baris perintah boleh laku berikut muncul.
command command:name Command description
Sudah tentu, menggunakan nama lalai ini bukanlah idea yang baik, jadi kami boleh mengubah suai kedua-dua sifat ini.
/** * The name and signature of the console command. * * @var string */ protected $signature = 'ZyBlog:Test1'; /** * The console command description. * * @var string */ protected $description = '硬核测试1';
Jika kami menjalankan php artisan sekali lagi pada masa ini, kami dapat melihat maklumat yang kami takrifkan.
ZyBlog ZyBlog:Test1 硬核测试1
Sangat mudah untuk menjalankan skrip ini.
# php artisan ZyBlog:Test1
Sudah tentu, kami belum melakukan apa-apa lagi, jadi tidak akan ada output. Seterusnya, kami menggabungkan parameter penerimaan dan maklumat output. Untuk menerima parameter, kita perlu menentukan parameter dan pilihan yang ingin kita terima dalam tandatangan. Ingat artikel yang kita bincangkan sebelum ini tentang cara menerima parameter skrip dan maklumat pilihan dalam PHP? Laravel telah merangkumkannya, jadi anda tidak perlu menggunakan fungsi tersebut untuk menerima dan memproses, hanya gunakannya secara langsung. Pelajar yang perlu menyemak boleh pergi ke [Cara mendapatkan parameter baris arahan PHP] mp.weixin.qq.com/s/dFuGaM1JT… untuk semakan atau pembelajaran.
protected $signature = 'ZyBlog:Test1 {a=1} {--b=*}'; /** * Execute the console command. * * @return int */ public function handle() { echo "欢迎进来测试!", PHP_EOL; print_r($this->arguments()); // Array // ( // [command] => ZyBlog:Test1 // [a] => 1 // ) print_r($this->options()); // Array // ( // [b] => Array // ( // [0] => 2 // ) // [help] => // [quiet] => // [verbose] => // [version] => // [ansi] => // [no-ansi] => // [no-interaction] => // [env] => // ) echo $this->argument('a'); // 1 print_r($this->option('b')); // Array // ( // [0] => 2 // ) return 0; }
Dalam fungsi handle(), kita boleh menulis kod fungsi yang perlu dilaksanakan oleh skrip semasa. Antaranya, maklumat parameter skrip boleh diterima melalui arguments() dan argument(), dan maklumat pilihan skrip boleh diterima melalui options() dan option(). Mengenai parameter dan pilihan, kami juga telah menerangkannya dalam artikel sebelumnya, jadi kami tidak akan menerangkan secara terperinci di sini Semuanya berdasarkan asas.
Untuk parameter dan pilihan, panggilan asas Laravel sebenarnya adalah komponen Console symfony dalam symfony/console/Input/ArgvInput.php, kita boleh lihat Pergi ke kod di bawah. .
public function __construct(array $argv = null, InputDefinition $definition = null) { $argv = $argv ?? $_SERVER['argv'] ?? []; // strip the application name array_shift($argv); $this->tokens = $argv; parent::__construct($definition); } // …………………… // …………………… protected function parse() { $parseOptions = true; $this->parsed = $this->tokens; while (null !== $token = array_shift($this->parsed)) { if ($parseOptions && '' == $token) { $this->parseArgument($token); } elseif ($parseOptions && '--' == $token) { $parseOptions = false; } elseif ($parseOptions && 0 === strpos($token, '--')) { $this->parseLongOption($token); } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { $this->parseShortOption($token); } else { $this->parseArgument($token); } } }
Jelas sekali, dalam symfony, argv juga digunakan untuk mendapatkan parameter dan pilihan, dan kemudiannya dimasukkan ke dalam pembolehubah input dan diturunkan. Pembolehubah input ini sangat penting, dan kami juga akan berhubung dengannya kemudian apabila kami mempelajari kandungan berkaitan permintaan. Kemudian, dalam kod pelaksanaan kami, iaitu, menggunakan argument() atau option() dalam kaedah handle() Command, data dalam input ini diperolehi. Kita boleh melihatnya daripada penyahpepijatan titik putus.
Jadi bagaimana Laravel melaksanakan fungsi handle()? Mula-mula, panggil fail laravel/framework/src/Illuminate/Foundation/Console/Kernel.php melalui fail artisan Dalam kaedah handle() dalam Kernel.php, symfony/console/Application.php akan dipanggil, dan kemudian masukkan. laravel/framework Laksanakan kaedah execute() dalam /src/Illuminate/Console/Command.php dan panggil kaedah handle() tersuai kami melalui panggil balik.
Perhatikan bahawa di bahagian bawah laravel/framework/src/Illuminate/Console/Command.php, kaedah dalam console/command.php di bawah symfony masih dipanggil.
Keseluruhan rantai panggilan sangat panjang, tetapi dapat dilihat dengan jelas bahawa Laravel kami sememangnya cangkerang berdasarkan Symfony. Dan ia bukan hanya baris arahan Dari segi permintaan Web, Symfony masih memainkan peranan penting di peringkat bawah.
Pembelajaran yang disyorkan: Tutorial video Laravel
Atas ialah kandungan terperinci Mari bercakap tentang Laravel menjalankan skrip baris arahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!