PHP Master | Bekerja dengan middleware langsing
Rangka Kerja Slim Middleware: Membina Aplikasi Mikro PHP yang kuat
Slim adalah rangka kerja Mini PHP yang kuat, di mana ciri middleware membolehkan pelaksanaan pelbagai perkhidmatan gaya penapis seperti pengesahan dan caching dalam aplikasi. Middleware merangkumi aplikasi dan boleh menjejaskan persekitaran aplikasi serta objek permintaan dan tindak balas.
Mata utama:
- Middleware Slim adalah ciri yang kuat yang membolehkan pelaksanaan pelbagai perkhidmatan gaya penapis seperti pengesahan dan caching. Middleware merangkumi aplikasi dan boleh menjejaskan persekitaran aplikasi, permintaan dan tindak balas aplikasi.
- Untuk melaksanakan middleware dalam Slim, anda perlu menulis kelas yang memanjangkan kelas
SlimMiddleware
dan mengatasi kaedahcall()
. Kaedah ini adalah titik masuk middleware, dari mana anda boleh kembali (mengganggu proses pelaksanaan) atau hubungi lapisan seterusnya. Middleware kemudian boleh memanipulasi tajuk dan badan respons. - Gunakan kaedah Slim
add()
untuk mendaftarkan middleware dalam aplikasi Slim. Pelbagai middleware boleh didaftarkan dengan panggilan seterusnya ke kaedahadd()
. Middleware mesti ditambah dalam susunan perintah panggilan yang bertentangan, kerana middleware baru akan mengelilingi mana -mana middleware yang ditambah sebelumnya. Konfigurasi middleware biasanya dilakukan melalui pembina perkhidmatan.
pemahaman middleware tipis
Dokumentasi Slim menyamakan aplikasi tipis ke bawang, setiap lapisan bawang adalah middleware. Ini adalah metafora yang sesuai. Untuk memahaminya dengan lebih baik, mari kita anggap kita menulis aplikasi yang menggunakan pengesahan dan caching. Senibina kami mungkin kelihatan seperti ini:
pelaksanaan middleware
Untuk memahami cara melaksanakan middleware tersuai, mari kita lihat kod yang boleh digunakan sebagai middleware cache yang disebutkan di atas. Sebenarnya terdapat sedikit keperluan untuk melaksanakan sebarang komponen middleware yang tipis asas. Kami hanya perlu menulis kelas yang memanjangkan kelas dan mengatasi kaedah SlimMiddleware
. Titik masuk middleware adalah kaedah call()
ini, dari mana kita boleh kembali (dan dengan itu mengganggu proses pelaksanaan) atau panggil lapisan seterusnya. call()
<?php namespace MyMiddleware; class Cache extends SlimMiddleware { protected $db; public function __construct(PDO $db) { $this->db = $db; } public function call() { $key = $this->app->request()->getResourceUri(); $rsp = $this->app->response(); $data = $this->fetch($key); if ($data) { // 缓存命中...返回缓存的内容 $rsp["Content-Type"] = $data["content_type"]; $rsp->body($data["body"]); return; } // 缓存未命中...继续生成页面 $this->next->call(); if ($rsp->status() == 200) { // 缓存结果以供将来查找 $this->save($key, $rsp["Content-Type"], $rsp->body()); } } protected function fetch($key) { $query = "SELECT content_type, body FROM cache WHERE key = " . $this->db->quote($key); $result = $this->db->query($query); $row = $result->fetch(PDO::FETCH_ASSOC); $result->closeCursor(); return $row; } protected function save($key, $contentType, $body) { $query = sprintf("INSERT INTO cache (key, content_type, body) VALUES (%s, %s, %s)", $this->db->quote($key), $this->db->quote($contentType), $this->db->quote($body) ); $this->db->query($query); } }
call()
Kaedah Pertama, periksa sama ada kandungan tersedia dalam cache. Jika ya, ia menetapkan header dan badan Content-Type
respons dan kemudian kembali, dengan itu memendekkan saluran paip. Jika cache terlepas, hubungi $this->next->call()
untuk memanggil lapisan middleware seterusnya. Apabila proses kembali ke titik ini dari panggilan middleware yang lain, status permintaan cepat diperiksa dan data yang relevan di -cache untuk carian masa depan. Kerana kelas ini memanjangkan kelas Slim Middleware
, ia boleh mengakses contoh aplikasi Slim melalui $this->app
, dengan itu secara tidak langsung mengakses respons dan objek permintaan. Kita boleh mempengaruhi tajuk tindak balas dengan merawatnya sebagai array dan mempengaruhi badan tindak balas melalui kaedah body()
. Kaedah fetch()
dan save()
dilindungi kaedah penolong, mereka hanya membungkus pertanyaan pangkalan data untuk mencari dan berterusan kandungan. Saya termasuk mereka di sini hanya untuk melengkapkan contoh -contoh. Ia mengandaikan bahawa terdapat jadual bernama cache
dengan lajur key
, content_type
dan body
. Bergantung pada keperluan anda, mekanisme kegigihan anda mungkin berbeza -beza. Juga, cache tamat tempoh (untuk kesederhanaan) tidak ditunjukkan di sini, walaupun anda boleh menggabungkannya sendiri.
mendaftar dan konfigurasi middleware
Mendaftar middleware menggunakan kaedah add()
Slim.
<?php require_once "../vendor/autoload.php"; $app = new SlimSlim(); $app->add(new MyMiddlewareCache($db));
Sudah tentu, pelbagai middleware boleh didaftarkan melalui kaedah panggilan add()
berikutnya. Kerana middleware baru akan mengelilingi mana -mana middleware yang ditambah sebelum ini, ini bermakna mereka mesti ditambah dalam urutan yang bertentangan panggilan.
<?php $app = new SlimSlim(); $app->add(new MyMiddlewareCache($db)); $app->add(new MyMiddlewareAuth($db)); // ...
Dalam contoh di atas, Cache
middleware membungkus aplikasi Slim, dan kemudian Auth
middleware membungkus Cache
. Apabila $app->run()
dipanggil, proses pelaksanaan akan sama dengan yang ditunjukkan dalam angka di atas, pertama memasuki middleware pengesahan dan kemudian bekerja sepanjang jalan ke laluan. Konfigurasi middleware biasanya dilakukan melalui pembina perkhidmatan. Dalam contoh kami, saya hanya lulus sambungan pangkalan data yang aktif supaya ia dapat mengakses jadual cache, tetapi anda boleh menulis kelas anda untuk menerima apa -apa maklumat yang anda perlukan untuk menyesuaikan tingkah lakunya. Sebagai contoh, komponen boleh ditindih untuk menerima objek pengendali yang mendedahkan fetch()
dan save()
kaedah ini akan membolehkan kami memadamkan kaedah sampel (atau menggunakannya sebagai penandaan lalai) dan pemaju pengguna akhir akan mengikuti keperluan IT Menyediakan fungsi sebagai sebahagian daripada konfigurasi komponen.
Kesimpulan
Saya mendapati bahawa middleware adalah penyelesaian yang elegan untuk melaksanakan semua aspek aplikasi tipis. Dalam artikel ini, saya menerangkan bagaimana seni bina middleware berfungsi dan apa yang diperlukan untuk melaksanakan middleware anda sendiri. Terdapat repositori tambahan kecil dengan beberapa contoh middleware asas seperti perlindungan CSRF dan pengesahan HTTP. Saya telah refactor contoh di sini dan mengemukakan permintaan tarik, jadi jika anda menulis perkhidmatan middleware yang berguna, mengapa tidak mempertimbangkan menyerahkannya kepada projek anda supaya orang lain dapat mendapat manfaat daripadanya juga?
(gambar dari fotolia)
(berikut adalah FAQ, yang telah diselaraskan dan ditambah mengikut kandungan asal, dan beberapa kandungan pendua telah diselaraskan)
Soalan Lazim Mengenai Slim Middleware
-
Apakah middleware yang tipis dan mengapa penting? Slim middleware adalah alat yang berkuasa dalam kerangka tipis yang membolehkan anda memanipulasi permintaan dan respons HTTP. Adalah penting kerana ia menyediakan cara untuk melaksanakan kod sebelum dan selepas permohonan Slim untuk mengubah suai permintaan masuk atau respons keluar. Ini boleh digunakan untuk pelbagai tujuan seperti pengesahan, caching, atau pembalakan.
-
Bagaimana untuk membuat middleware dalam langsing? Mewujudkan middleware dalam Slim melibatkan menentukan kelas yang melaksanakan . Kelas ini harus mempunyai kaedah yang dipanggil
MiddlewareInterface
yang menerimaprocess()
danServerRequestInterface
. KaedahRequestHandlerInterface
adalah di mana anda boleh memanipulasi permintaan dan respons.process()
-
Bagaimana untuk menambah middleware ke aplikasi langsing saya? anda boleh menggunakan kaedah untuk menambah middleware ke aplikasi Slim anda. Kaedah ini menerima contoh kelas middleware. Middleware dilaksanakan mengikut urutan tambahan, jadi middleware terakhir ditambah akan menjadi middleware pertama untuk dilaksanakan.
add()
-
Bolehkah saya menggunakan middleware untuk laluan tertentu dalam langsing? Ya, middleware boleh digunakan untuk laluan tertentu dalam langsing. Ini dilakukan dengan memanggil kaedah pada objek
Route
dan bukannya objekApp
. Ini membolehkan anda mempunyai middleware yang hanya memberi kesan kepada laluan tertentu.add()
-
Apakah perbezaan antara middleware global dan middleware penghalaan? Middleware global digunakan untuk setiap permintaan yang diproses oleh aplikasi Slim, sementara middleware routing digunakan untuk hanya laluan tertentu. Ini membolehkan anda menggunakan middleware yang berbeza untuk bahagian yang berlainan aplikasi anda.
-
Bagaimana menggunakan middleware untuk melakukan pengendalian ralat dalam langsing? Dengan menangkap pengecualian dalam kelas middleware, anda boleh menggunakan middleware untuk melakukan pengendalian ralat dalam Slim. Anda kemudian boleh mengubah suai respons untuk memasukkan mesej ralat, atau mengalihkan pengguna ke halaman ralat.
-
Bolehkah anda mengesahkan pengguna dalam Slim menggunakan middleware? Ya, middleware sering digunakan untuk pengesahan dalam Slim. Ini boleh dilakukan dengan menyemak sesi atau token yang sah di middleware dan mengembalikan tindak balas ralat jika pengguna tidak disahkan.
-
Bagaimana menggunakan middleware untuk log masuk Slim? Dengan menulis maklumat mengenai permintaan dan tindak balas kepada fail log, middleware boleh digunakan untuk pembalakan. Ini sangat berguna untuk menyahpepijat atau memantau permohonan anda.
-
Bolehkah saya menggunakan middleware pihak ketiga dengan Slim? Ya, Slim menyokong middleware pihak ketiga. Ini boleh ditambah ke aplikasi anda seperti middleware anda sendiri. Ini membolehkan anda memanfaatkan middleware sedia ada untuk menyelesaikan tugas -tugas yang sama.
-
Bagaimana untuk menguji middleware langsing saya? Menguji middleware langsing melibatkan membuat permintaan dan tindak balas mengejek dan lulus mereka ke middleware anda. Anda kemudian boleh menegaskan bahawa middleware berkelakuan seperti yang diharapkan, seperti mengubah suai permintaan atau tindak balas, atau membuang pengecualian.
Atas ialah kandungan terperinci PHP Master | Bekerja dengan middleware langsing. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

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











PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan pembangunan API. 1) e-dagang: Digunakan untuk fungsi keranjang belanja dan pemprosesan pembayaran. 2) Sistem Pengurusan Kandungan: Digunakan untuk penjanaan kandungan dinamik dan pengurusan pengguna. 3) Pembangunan API: Digunakan untuk Pembangunan API RESTful dan Keselamatan API. Melalui pengoptimuman prestasi dan amalan terbaik, kecekapan dan pemeliharaan aplikasi PHP bertambah baik.

Kaedah permintaan HTTP termasuk GET, POST, PUT dan DELETE, yang digunakan untuk mendapatkan, menghantar, mengemas kini dan memadam sumber masing -masing. 1. Kaedah GET digunakan untuk mendapatkan sumber dan sesuai untuk operasi membaca. 2. Kaedah Pos digunakan untuk menyerahkan data dan sering digunakan untuk membuat sumber baru. 3. Kaedah Put digunakan untuk mengemas kini sumber dan sesuai untuk kemas kini lengkap. 4. Kaedah Padam digunakan untuk memadam sumber dan sesuai untuk operasi penghapusan.

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

Dalam phpoop, diri :: merujuk kepada kelas semasa, ibu bapa :: merujuk kepada kelas induk, statik :: digunakan untuk mengikat statik lewat. 1.Self :: digunakan untuk kaedah statik dan panggilan berterusan, tetapi tidak menyokong pengikatan statik lewat. 2.Parent :: digunakan untuk subkelas untuk memanggil kaedah kelas induk, dan kaedah peribadi tidak dapat diakses. 3.Static :: Menyokong pengikatan statik lewat, sesuai untuk warisan dan polimorfisme, tetapi boleh menjejaskan kebolehbacaan kod.

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.
