Rumah pembangunan bahagian belakang tutorial php Middleware dalam Lithe: Cara Ia Berfungsi dan Cara Mencipta Sendiri

Middleware dalam Lithe: Cara Ia Berfungsi dan Cara Mencipta Sendiri

Oct 25, 2024 am 03:28 AM

Middleware in Lithe: How It Works and How to Create Your Own

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

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

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

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

Dalam contoh di bawah, middleware mengendalikan permintaan GET ke laluan /user/:id:

$myLogger = function ($req, $res, $next) {
  echo 'LOGGED';
  $next();
};
Salin selepas log masuk
Salin selepas log masuk

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

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

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

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

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

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!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

11 skrip pemendek URL terbaik PHP (percuma dan premium) 11 skrip pemendek URL terbaik PHP (percuma dan premium) Mar 03, 2025 am 10:49 AM

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Pengenalan kepada API Instagram Pengenalan kepada API Instagram Mar 02, 2025 am 09:32 AM

Pengenalan kepada API Instagram

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Bekerja dengan Data Sesi Flash di Laravel

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Respons HTTP yang dipermudahkan dalam ujian Laravel

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

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

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Mar 04, 2025 am 09:33 AM

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

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

12 skrip sembang php terbaik di codecanyon

Pemberitahuan di Laravel Pemberitahuan di Laravel Mar 04, 2025 am 09:22 AM

Pemberitahuan di Laravel

See all articles