Middleware adalah lapisan kod untuk mengendalikan permintaan dan respons umum dalam aplikasi web PHP. Fungsi terasnya termasuk pengesahan, pembalakan, tetapan CORS dan penapisan input. 1. Middleware terletak di antara permintaan dan tindak balas, dan lapisan diproses oleh lapisan oleh lapisan menggunakan "Model Bawang"; 2. Ia sering digunakan untuk mengendalikan tugas logik bukan perniagaan secara seragam; 3. Logik dilaksanakan melalui kaedah pemegang () dalam rangka kerja seperti Laravel; 4. Tidak seperti pengawal, middleware mengendalikan operasi global, sementara pengawal memberi tumpuan kepada logik perniagaan tertentu; 5. Apabila menulis, anda perlu memberi perhatian untuk memanggil middleware seterusnya, mengelakkan operasi kompleks, menjaga pesanan yang betul, dan tidak secara langsung mengeluarkan kandungan.
PHP middleware sebenarnya merupakan konsep yang sangat praktikal dalam aplikasi web. Ia bukan perkara baru, tetapi ia menjadi lebih dan lebih biasa dengan perkembangan kerangka moden. Anda boleh memahaminya sebagai satu siri "lapisan pemprosesan" antara permintaan dan tindak balas akhir, dengan setiap middleware mempunyai peluang untuk mengubah suai permintaan atau kandungan tindak balas, atau memutuskan sama ada untuk terus lulus.

Apa itu middleware?
Middleware pada dasarnya adalah sekeping kod yang datang sebelum permintaan web memasuki logik pemprosesan akhir (seperti kaedah pengawal), dan sebelum respons dikembalikan kepada penyemak imbas. Ia digunakan untuk mengendalikan tugas biasa seperti:
- Pengesahan
- Pembalakan
- Permintaan penapisan
- Tetapan silang domain
Idea reka bentuknya ialah "Model Bawang": Permintaan melalui setiap lapisan middleware dari luar ke dalam, dan kemudian mengembalikan respons dari dalam ke luar selepas diproses.

Apa yang boleh dilakukan oleh middleware?
Middleware sangat sesuai untuk melakukan perkara -perkara yang tidak memerlukan logik perniagaan tertentu untuk mengambil bahagian tetapi juga perlu ditangani secara seragam dalam pelbagai permintaan. Berikut adalah beberapa senario penggunaan biasa:
- Pengesahan : Periksa sama ada terdapat token atau sesi yang sah, jika tidak ada, ia akan terus kembali 401.
- Pembalakan : Rekod URL, IP, memakan masa dan maklumat lain setiap permintaan.
- Tetapan CORS : Tambah medan berkaitan silang domain dalam tajuk tindak balas.
- Penapisan Input : Lakukan beberapa preprocessing parameter permintaan, seperti membersihkan input XSS.
Untuk memberi contoh mudah: Jika anda mahu semua permintaan API membawa tajuk tertentu, anda boleh menulis middleware untuk memintas permintaan yang tidak memenuhi kriteria dan terus mengembalikan ralat tanpa mengulangi penghakiman di setiap antara muka.

Bagaimana cara menggunakan middleware dalam rangka kerja PHP?
Rangka kerja PHP yang paling moden (seperti Laravel, Slim, dan Symfony) menyokong mekanisme middleware. Walaupun kaedah pelaksanaannya sedikit berbeza, struktur asas adalah serupa.
Mengambil Laravel sebagai contoh, membuat middleware adalah mudah:
PHP Artisan Make: middleware checktoken
Kemudian anda akan mendapat kelas dengan dua kaedah: handle()
dan terminate()
. Logik utama ditulis dalam handle()
, seperti:
Pemegang fungsi awam (permintaan $, penutupan $ seterusnya) { jika (! $ request-> headers-> mempunyai ('kebenaran')) { tindak balas kembali ('tidak dibenarkan.', 401); } kembali $ seterusnya (permintaan $); }
Akhirnya, daftar middleware ini di kernel.php, atau nyatakan penggunaan dalam laluan.
Petua:
- Sesetengah middleware hanya sesuai untuk laluan tertentu dan boleh terikat kepada kumpulan penghalaan.
- Sekiranya terdapat banyak logik di middleware, disyorkan untuk memecahnya ke dalam pelbagai middleware kecil, yang lebih jelas dan mudah digunakan semula.
Perbezaan antara middleware dan pengawal
Ramai orang baru cenderung mengelirukan fungsi middleware dan pengawal. Ringkas:
- Pengawal bertanggungjawab untuk mengendalikan logik perniagaan tertentu, seperti membaca pangkalan data dan menghasilkan kandungan halaman.
- Middleware bertanggungjawab untuk mengendalikan operasi global dan sejagat dan tidak peduli dengan perniagaan tertentu.
Oleh itu, jika anda mendapati bahawa logik tertentu berulang dalam pelbagai pengawal, ia mungkin lebih sesuai untuk meletakkannya di middleware.
Apa yang perlu anda perhatikan semasa menulis middleware?
Terdapat beberapa perkara untuk memberi perhatian khusus ketika menulis middleware:
- Pastikan untuk menghubungi
$next($request)
atau permintaan akan terjebak. - Jangan lakukan pengiraan yang terlalu kompleks di middleware, kerana ia akan menjejaskan prestasi.
- Pesanannya sangat penting! Perintah pelaksanaan middleware adalah urutan di mana ia ditakrifkan.
- Elakkan secara langsung mengeluarkan kandungan dalam middleware, yang terbaik adalah untuk kembali dengan mengubahsuai objek tindak balas.
Pada dasarnya itu sahaja. Middleware bukan konsep yang kompleks, tetapi sangat berguna dalam pembangunan sebenar, terutama ketika membina aplikasi berasaskan penyelenggaraan, modular. Selagi anda menguasai masa dan sempadan penggunaannya, kod anda akan lebih bersih dan lebih teratur.
Atas ialah kandungan terperinci Jelaskan konsep middleware PHP dalam aplikasi web.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

TOVERSIONAPHP-berasaskan-berasaskan, UseUrl-berasaskan Forversioningforclarityandeaseofrouting, separateVersionedcodetoavoidconflicts, decrecateoldversionswithclearCommunication, andconsidercustomheadershipshenershipshenershipshenershipshenershinlyhenershinlywenershinly

TosecurelyhandleAuthenticationandauthorizationInphp, ikuti: 1.alwayshashpasswordswithpassword_hash () andverifyUsingPassword_verify (), usePePreparedStatementStopreventsqlInjection, andStoreUserDatain $ _SessionAsLogin.2.implescureRoleRoleRoleRoleRole

Proseduralandobject-orientedprogramming (OOP) inphpdiffers significelyinstructure, kebolehgunaan semula, dandatahandling.1.ProceduralProgrammingusesFunctionsaganediediedieds, sesuai, pemodelan

PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe

Untuk mengendalikan muat naik fail dengan selamat di PHP, terasnya adalah untuk mengesahkan jenis fail, menamakan semula fail, dan menyekat kebenaran. 1. Gunakan finfo_file () untuk memeriksa jenis mime sebenar, dan hanya jenis tertentu seperti imej/jpeg dibenarkan; 2. Gunakan uniqid () untuk menghasilkan nama fail rawak dan simpannya dalam direktori akar bukan web; 3. Hadkan saiz fail melalui borang php.ini dan html, dan tetapkan kebenaran direktori ke 0755; 4. Gunakan Clamav untuk mengimbas malware untuk meningkatkan keselamatan. Langkah -langkah ini dengan berkesan menghalang kelemahan keselamatan dan memastikan bahawa proses muat naik fail adalah selamat dan boleh dipercayai.

Dalam PHP, perbezaan utama antara == dan == adalah ketat pemeriksaan jenis. == Penukaran jenis akan dilakukan sebelum perbandingan, contohnya, 5 == "5" pulangan benar, dan === meminta nilai dan jenis adalah sama sebelum benar akan dikembalikan, sebagai contoh, 5 === "5" mengembalikan palsu. Dalam senario penggunaan, === lebih selamat dan harus digunakan terlebih dahulu, dan == hanya digunakan apabila penukaran jenis diperlukan.

Ya, PHP boleh berinteraksi dengan pangkalan data NoSQL seperti MongoDB dan Redis melalui sambungan atau perpustakaan tertentu. Pertama, gunakan pemacu MongoDBPHP (dipasang melalui PECL atau komposer) untuk membuat contoh pelanggan dan mengendalikan pangkalan data dan koleksi, penyisipan sokongan, pertanyaan, pengagregatan dan operasi lain; Kedua, gunakan perpustakaan predis atau lanjutan phpredis untuk menyambung ke REDIS, lakukan tetapan dan pengambilalihan nilai utama, dan mengesyorkan PHPREDI untuk senario berprestasi tinggi, sementara Predis mudah untuk penempatan pesat; Kedua-duanya sesuai untuk persekitaran pengeluaran dan didokumentasikan dengan baik.

Kaedah menggunakan operasi matematik asas dalam PHP adalah seperti berikut: 1. Tanda tambahan menyokong bilangan bulat dan nombor terapung, dan juga boleh digunakan untuk pembolehubah. Nombor rentetan akan ditukar secara automatik tetapi tidak disyorkan kepada kebergantungan; 2. Tanda -tanda pengurangan - tanda, pembolehubah adalah sama, dan penukaran jenis juga terpakai; 3. Tanda -tanda pendaraban menggunakan tanda *, yang sesuai untuk nombor dan rentetan yang serupa; 4. Bahagian menggunakan / tanda, yang perlu mengelakkan pembahagian dengan sifar, dan perhatikan bahawa hasilnya mungkin nombor terapung; 5. Mengambil tanda modulus boleh digunakan untuk menilai angka ganjil dan bahkan, dan apabila memproses nombor negatif, tanda -tanda selebihnya selaras dengan dividen. Kunci untuk menggunakan pengendali ini dengan betul adalah untuk memastikan bahawa jenis data adalah jelas dan keadaan sempadan ditangani dengan baik.
