Rumah >rangka kerja php >Laravel >Penjelasan dan kes terperinci: Pengenalan kepada kitaran hayat permintaan Laravel

Penjelasan dan kes terperinci: Pengenalan kepada kitaran hayat permintaan Laravel

WBOY
WBOYke hadapan
2022-02-15 17:27:022439semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang kitaran pengisytiharan permintaan laravel Kitaran hayat permintaan mempunyai istilah yang berbeza, seperti pemuat automatik, kernel, pembekal perkhidmatan, permintaan penjadualan dan penghalaan, dll. , harap ia membantu. semua orang.

Penjelasan dan kes terperinci: Pengenalan kepada kitaran hayat permintaan Laravel

Laravel ialah rangka kerja PHP yang berkuasa Apabila anda mempelajari rangka kerja laravel, kitaran hayat permintaan Laravel ialah titik permulaan yang terbaik. Artikel ini akan memperkenalkan perkara yang berlaku antara penerimaan permintaan HTTP dan respons dalam Laravel. Kajian mendalam tentang kitaran hayat permintaan akan membantu kami memahami struktur Laravel. (Berdasarkan Laravel 8)

Terdapat istilah berbeza untuk kitaran hayat permintaan, seperti autoloader, kernel, pembekal perkhidmatan, permintaan penghantaran dan penghalaan, dsb. Sebaik sahaja anda memahami semua istilah secara terperinci, anda akan lebih memahami rangka kerja tersebut dan boleh memanjangkannya dengan ciri yang berbeza mengikut kehendak anda.

Laravel 请求生命周期

Gambaran keseluruhan kitaran hayat permintaan Laravel

Langkah pertama

Muatkan kebergantungan projek dan buat contoh aplikasi Laravel

Laravel Titik masuk untuk semua permintaan kepada aplikasi ialah fail public/index.php. Semua permintaan diarahkan ke fail ini oleh konfigurasi pelayan web anda (Apache/Nginx). Fail index.php itu tidak mengandungi banyak kod. Sebaliknya, ia adalah titik permulaan untuk memuatkan seluruh bingkai.

# 1、加载项目依赖require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

Fail index.php akan memuatkan definisi autoloader yang dijana oleh Komposer dan kemudian mengambil contoh aplikasi Laravel daripada bootstrap/app.php.

bootstrap/app.php:

<?php

    # 2、创建应用实例
    $app = new Illuminate\Foundation\Application(
        $_ENV[&#39;APP_BASE_PATH&#39;] ?? dirname(__DIR__)
    );

    # 3、完成内核绑定
    $app->singleton(
        Illuminate\Contracts\Http\Kernel::class,
        App\Http\Kernel::class
    );

    $app->singleton(
        Illuminate\Contracts\Console\Kernel::class,
        App\Console\Kernel::class
    );

    $app->singleton(
        Illuminate\Contracts\Debug\ExceptionHandler::class,
        App\Exceptions\Handler::class
    );

    return $app;

Selepas itu, ia akan bootstrap rangka kerja Laravel untuk menggunakan dan menjana contoh aplikasi.

public/index.php:

# 4、接收请求并响应$kernel = $app->make(Kernel::class);// 处理请求$response = tap($kernel->handle(
	// 创建请求实例
    $request = Request::capture()// 发送响应))->send();$kernel->terminate($request, $response);

Setelah contoh aplikasi dihasilkan, permintaan masuk akan dikendalikan oleh kernel.

Inti HTTP atau Console

Seterusnya, permintaan masuk dihantar sama ada ke kernel HTTP atau kernel Console, bergantung pada jenis permintaan yang masuk ke dalam aplikasi. Kedua-dua teras ini bertindak sebagai lokasi pusat di mana semua permintaan mengalir. Buat masa ini, mari kita fokus pada teras HTTP, yang terletak di app/Http/Kernel.php.

Teras HTTP memanjangkan kelas IlluminateFoundationHttpkernel, yang mentakrifkan tatasusunan bootstrapper yang akan dijalankan sebelum melaksanakan permintaan. Bootstrap ini digunakan untuk mengkonfigurasi pengendalian pengecualian, mengkonfigurasi pengelogan, mengesan persekitaran aplikasi dan melaksanakan tugas lain yang perlu diselesaikan sebelum permintaan sebenarnya diproses. Biasanya, anda tidak perlu risau tentang konfigurasi ini.

Teras HTTP juga mentakrifkan senarai perisian tengah HTTP yang mesti dilalui oleh semua permintaan sebelum diproses oleh aplikasi. Perisian tengah ini mengendalikan sesi HTTP membaca dan menulis, menentukan sama ada aplikasi dalam mod penyelenggaraan, mengesahkan token CSRF dan banyak lagi. Kami akan membincangkan perkara ini secara terperinci seterusnya.

Tandatangan kaedah pemegang kernel HTTP adalah sangat mudah: ia menerima antara muka Permintaan dan mengembalikan antara muka Respons. Fikirkan kernel sebagai kotak hitam besar yang mewakili keseluruhan aplikasi. Beri permintaan HTTP dan ia akan mengembalikan respons HTTP.

Teras HTTP juga memuatkan penyedia perkhidmatan dengan mengkonfigurasi perisian tengah dan fungsi lain.

Pembekal Perkhidmatan

Salah satu operasi but kernel yang paling penting ialah memuatkan service providers untuk aplikasi. Semua pembekal perkhidmatan untuk aplikasi berada dalam tatasusunan config/app.php. providers

Laravel akan beralih melalui senarai penyedia ini dan membuat seketika setiap satu daripada mereka. Sebaik sahaja pembekal dibuat seketika, kaedah

akan dipanggil pada semua pembekal. Kemudian, setelah semua penyedia didaftarkan, kaedah register dipanggil pada setiap pembekal. boot

Pembekal perkhidmatan bertanggungjawab untuk memboot semua komponen rangka kerja yang berbeza, seperti pangkalan data, baris gilir, pengesahan dan komponen penghalaan. Pada asasnya, setiap ciri utama yang disediakan oleh Laravel adalah bootstrapped dan dikonfigurasikan oleh pembekal perkhidmatan. Pembekal perkhidmatan adalah bahagian paling penting dalam keseluruhan proses bootstrap Laravel disebabkan oleh banyak ciri yang disediakan oleh rangka kerja bootstrap dan konfigurasi mereka.

Anda mungkin tertanya-tanya mengapa kaedah daftar setiap pembekal perkhidmatan dipanggil sebelum memanggil kaedah

pada mana-mana pembekal perkhidmatan. Jawapannya mudah sahaja. Dengan terlebih dahulu memanggil kaedah daftar setiap pembekal perkhidmatan, pembekal perkhidmatan boleh bergantung pada setiap pengikatan kontena yang didaftarkan dan tersedia apabila kaedah but dilaksanakan. boot

Penyedia perkhidmatan adalah kunci untuk bootstrap aplikasi Laravel anda. Contoh aplikasi dibuat, pembekal perkhidmatan didaftarkan, dan permintaan diserahkan kepada aplikasi bootstrap. Ia sangat mudah!

Memiliki pemahaman yang kukuh tentang cara aplikasi Laravel dibina dan dipasang melalui pembekal perkhidmatan adalah sangat berharga. Pembekal perkhidmatan lalai aplikasi anda disimpan dalam direktori

ini. app/Providers

Secara lalai, AppServiceProvider kosong. Prosedur ini ialah tempat yang baik untuk menambah tali but dan pengikatan bekas perkhidmatan anda sendiri. Untuk aplikasi yang besar, anda mungkin ingin mencipta berbilang penyedia perkhidmatan, masing-masing menyediakan panduan yang lebih terperinci untuk perkhidmatan khusus yang digunakan oleh aplikasi anda.

Setelah aplikasi di-bootstrap dan semua pembekal perkhidmatan didaftarkan dan di-bootstrap, permintaan diserahkan kepada penghala untuk dihantar.

Penghalaan

Salah satu penyedia perkhidmatan yang paling penting dalam aplikasi ialah AppProvidersRouteServiceProvider. Pembekal perkhidmatan ini memuatkan fail laluan yang terkandung dalam direktori routes aplikasi.

Penghala menghantar permintaan kepada laluan atau pengawal dan menjalankan sebarang perisian tengah khusus laluan.

Middleware menyediakan mekanisme yang mudah untuk menapis atau memeriksa permintaan HTTP yang memasuki aplikasi. Sebagai contoh, Laravel menyertakan perisian tengah yang mengesahkan bahawa pengguna aplikasi anda telah disahkan. Jika pengguna tidak disahkan, middleware mengubah hala pengguna ke halaman log masuk. Walau bagaimanapun, jika pengguna disahkan, middleware akan membenarkan permintaan itu terus ke dalam aplikasi. Sesetengah perisian tengah diperuntukkan kepada semua laluan dalam aplikasi, seperti yang ditakrifkan dalam atribut $middleware teras HTTP, manakala sesetengahnya hanya diperuntukkan kepada laluan atau kumpulan laluan tertentu. Anda boleh mengetahui lebih lanjut tentang middleware dengan membaca dokumentasi middleware yang lengkap.

Arahkan permintaan HTTP kepada pengawal atau kembalikan pandangan atau respons secara terus dengan meninggalkan pengawal jika permintaan itu melepasi semua middleware yang diberikan oleh laluan yang sepadan

Pengawal

Pengawal app/Http/Controllers/ lakukan tindakan khusus dan hantar data ke paparan.

Lihat

Lihat resources/views/ Formatkan data dengan sewajarnya, memberikan respons HTTP.

Akhir sekali

Sebaik sahaja laluan atau kaedah pengawal mengembalikan respons, respons dikembalikan melalui perisian tengah laluan, memberi peluang kepada aplikasi untuk mengubah suai atau memeriksa respons keluar.

Biasanya, anda bukan sahaja akan mengembalikan rentetan atau tatasusunan ringkas daripada operasi penghalaan. Sebaliknya, contoh atau paparan IlluminateHttpResponse lengkap dikembalikan.

Kejadian respons diperoleh daripada kelas SymfonyComponentHttpFoundationResponse, yang menyediakan beberapa kaedah untuk membina respons HTTP.

Akhir sekali, sebaik sahaja respons dihantar semula melalui perisian tengah, kaedah pemegang teras HTTP mengembalikan objek respons dan index.php fail memanggil kaedah hantar pada respons yang dikembalikan. Kaedah hantar menghantar kandungan respons kepada pelayar web pengguna.

Pada ketika ini, kami telah menyelesaikan semua langkah bagi keseluruhan kitaran hayat permintaan Laravel!

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Penjelasan dan kes terperinci: Pengenalan kepada kitaran hayat permintaan Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam