


Middleware dalam Lithe: Cara Ia Berfungsi dan Cara Mencipta Sendiri
Oct 25, 2024 am 03:28 AMMiddleware menyediakan mekanisme yang mudah untuk memeriksa dan menapis permintaan HTTP yang memasuki aplikasi anda. Contohnya, Lithe termasuk middleware yang menyemak sama ada pengguna disahkan. Jika tidak, perisian tengah akan mengubah hala pengguna ke skrin log masuk. Jika pengguna disahkan, middleware membenarkan permintaan diteruskan.
Bagaimana Middleware Berfungsi dalam Lithe
Dalam Lithe, middleware ialah fungsi dengan akses kepada objek permintaan ($req), objek respons ($res), dan fungsi $next dalam kitaran permintaan-tindak balas aplikasi. Fungsi $next, apabila dipanggil, memanggil middleware seterusnya dalam tindanan semasa.
Fungsi perisian tengah menyediakan cara yang mudah untuk memeriksa, menapis dan memanipulasi permintaan HTTP masuk ke aplikasi anda. Mereka boleh:
- Laksanakan sebarang kod.
- Ubah suai permintaan dan objek respons.
- Tamatkan kitaran permintaan-tindak balas.
- Panggil perisian tengah seterusnya dalam tindanan.
Jika middleware semasa tidak menamatkan kitaran permintaan-tindak balas, ia mesti memanggil $next() untuk menghantar kawalan kepada middleware seterusnya. Jika tidak, permintaan akan kekal belum selesai.
Elemen Fungsi Middleware
Kod berikut menunjukkan unsur-unsur fungsi middleware:
$app->use(function ($req, $res, $next) { $next(); });
Di mana:
- $req: Hujah permintaan HTTP, secara konvensional dipanggil $req.
- $res: Hujah respons HTTP, secara konvensional dipanggil $res.
- $next: Argumen panggil balik, biasa dipanggil $next.
Mentakrifkan Middleware
Berikut ialah contoh ringkas perisian tengah yang dipanggil myLogger. Perisian tengah ini mencetak mesej DILOG setiap kali permintaan melaluinya. Ia ditakrifkan sebagai fungsi yang diberikan kepada pembolehubah yang dipanggil myLogger:
$myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); };
Perhatikan panggilan $next() di atas. Fungsi ini memanggil middleware seterusnya dalam aplikasi. $next() bukan fungsi PHP atau Lithe terbina dalam tetapi merupakan hujah ketiga yang dihantar kepada fungsi middleware. Walaupun $next() boleh dinamakan apa-apa, mengikut konvensyen, ia sentiasa dipanggil "seterusnya." Untuk mengelakkan kekeliruan, ikuti konvensyen ini.
Bayangkan perisian tengah sebagai satu siri "lapisan" yang dilalui oleh permintaan HTTP sebelum mencapai aplikasi anda. Setiap lapisan boleh memeriksa atau menolak permintaan.
Memuatkan Middleware
Untuk memuatkan perisian tengah, anda memanggil kaedah use() kelas LitheApp, menyatakan fungsi perisian tengah. Contohnya:
$app = new \Lithe\App; $myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); }; $app->use($myLogger); $app->get('/', function ($req, $res, $next) { $res->send('Hello World!'); });
Apabila apl menerima permintaan, mesej "LOGGED" akan dicetak. Urutan pemuatan perisian tengah adalah penting: yang dimuatkan dahulu dilaksanakan dahulu.
Middleware myLogger hanya mencetak mesej, kemudian menghantar permintaan ke middleware seterusnya menggunakan $next().
Menggunakan Middleware
Aplikasi Lithe boleh menggunakan jenis middleware berikut:
- Perisian Tengah peringkat aplikasi
- Perisian Tengah peringkat penghala
- Perisian Tengah pihak ketiga
Middleware peringkat aplikasi
Anda melampirkan perisian tengah peringkat aplikasi pada contoh aplikasi menggunakan kaedah use() atau METHOD(), dengan METHOD merujuk kepada kaedah HTTP (cth., GET, PUT, POST) dalam huruf kecil.
Contoh ini menunjukkan perisian tengah tanpa laluan. Perisian tengah berjalan setiap kali permintaan diterima:
$app->use(function ($req, $res, $next) { $next(); });
Dalam contoh di bawah, middleware mengendalikan permintaan GET ke laluan /user/:id:
$myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); };
Middleware peringkat penghala
Perisian tengah peringkat penghala berfungsi seperti perisian perantara peringkat aplikasi tetapi dilampirkan pada tika LitheHttpRouter:
$app = new \Lithe\App; $myLogger = function ($req, $res, $next) { echo 'LOGGED'; $next(); }; $app->use($myLogger); $app->get('/', function ($req, $res, $next) { $res->send('Hello World!'); });
Anda memuatkan middleware peringkat penghala menggunakan fungsi use() dan METHOD().
Berikut ialah contoh perisian tengah peringkat penghala:
$app->use(function ($req, $res, $next) { echo 'Hello World!'; $next(); });
Middleware pihak ketiga
Anda boleh menggunakan perisian tengah pihak ketiga untuk menambah kefungsian pada aplikasi Lithe anda. Pasang modul PHP yang diperlukan dan kemudian muatkannya pada peringkat aplikasi atau penghala.
Berikut ialah contoh perisian tengah sesi memuatkan dengan LitheMiddlewareSessionsession:
$app->get('/user/:id', function ($req, $res, $next) { if ($req->param('id') === '0') { return $next(); } $res->send('ID is not 0'); }, function ($req, $res) { $res->send('regular'); });
Untuk senarai perisian tengah pihak ketiga yang biasa digunakan dengan Lithe, semak sumber Perisian Tengah pihak ketiga.
Middleware boleh dikonfigurasikan
Jika anda memerlukan perisian tengah anda boleh dikonfigurasikan, anda boleh mencipta fungsi yang menerima tatasusunan pilihan atau parameter lain dan kemudian mengembalikan pelaksanaan perisian tengah berdasarkan parameter tersebut. Lihat contoh di bawah:
$router = new \Lithe\Http\Router;
Kini, anda boleh menggunakan perisian tengah dengan konfigurasi tersuai:
$router = new \Lithe\Http\Router; $router->use(function ($req, $res, $next) { echo 'Time: ', Date('H:i:s'), '<br>'; $next(); }); $router->get('/user/:id', function ($req, $res, $next) { if ($req->param('id') === '0') { $res->redirect('/'); } $next(); }, function ($req, $res) { echo $req->param('id'); $res->render('special'); }); $app->use('/api', $router);
Untuk mencipta middleware yang boleh dipasang oleh pembangun lain melalui Composer, terdapat pakej yang dipanggil lithemod/flow. Ia menyediakan antara muka dan utiliti untuk mengendalikan permintaan dan tindak balas HTTP dalam Lithe, yang memudahkan penciptaan middleware terpiawai dan sedia untuk digunakan merentas pelbagai aplikasi.
lithemod/flow membantu membina middleware yang mantap dengan menyediakan antara muka bersatu untuk Permintaan dan Respons, menjadikan pembangunan lebih cekap dan teratur. Ini memudahkan penyepaduan perisian tengah anda ke dalam projek lain dan memastikan kod itu mengikut piawaian yang konsisten.
Atas ialah kandungan terperinci Middleware dalam Lithe: Cara Ia Berfungsi dan Cara Mencipta Sendiri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel 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

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Bekerja dengan Data Sesi Flash di Laravel

Respons HTTP yang dipermudahkan dalam ujian Laravel

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React

12 skrip sembang php terbaik di codecanyon
