Rumah > rangka kerja php > Laravel > teks badan

Mari bercakap tentang Laravel menjalankan skrip baris arahan

WBOY
Lepaskan: 2022-04-06 20:16:14
ke hadapan
2965 orang telah melayarinya

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.

Mari bercakap tentang Laravel menjalankan skrip baris arahan

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.

Skrip yang disediakan secara lalai

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
Salin selepas log masuk

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

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.
Salin selepas log masuk

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';
Salin selepas log masuk

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
Salin selepas log masuk

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';
Salin selepas log masuk

Jika kami menjalankan php artisan sekali lagi pada masa ini, kami dapat melihat maklumat yang kami takrifkan.

 ZyBlog
  ZyBlog:Test1         硬核测试1
Salin selepas log masuk

Sangat mudah untuk menjalankan skrip ini.

# php artisan ZyBlog:Test1
Salin selepas log masuk

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;
}
Salin selepas log masuk

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.

Analisis kod sumber pilihan parameter

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);
        }
    }
}
Salin selepas log masuk

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.

Mari bercakap tentang Laravel menjalankan skrip baris arahan

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!

Label berkaitan:
sumber:juejin.im
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!