Memandangkan kerumitan aplikasi web moden terus meningkat, logik kod menjadi semakin kompleks. Untuk menyelesaikan masalah ini, perisian tengah menjadi semakin popular dalam pembangunan web moden. ThinkPHP6 ialah rangka kerja PHP popular yang turut menyokong perisian tengah. Dalam artikel ini, kita akan membincangkan asas dan kegunaan praktikal perisian pertengahan ThinkPHP6.
Dalam pembangunan web, middleware merujuk kepada cara memproses permintaan dan respons HTTP. Apabila klien menghantar permintaan kepada pelayan, permintaan HTTP melalui berbilang middleware dan akhirnya mengembalikan respons kepada klien.
Perisian tengah boleh beroperasi atas permintaan sebelum ia tiba di pengawal atau tindakan sasaran, dan juga boleh beroperasi pada respons sebelum ia meninggalkan pengawal atau tindakan sasaran. Pendekatan ini membolehkan kami menambah fungsi tambahan tanpa mengubah logik aplikasi.
Dalam ThinkPHP6, perisian tengah boleh digunakan secara global atau mengikut keperluan. Semua perisian tengah disimpan dalam direktori aplikasi/perisian tengah.
Struktur asas perisian tengah:
<?php declare (strict_types=1); namespace appmiddleware; use thinkRequest; use thinkResponse; class SampleMiddleware { public function handle(Request $request, Closure $next): Response { // do something before the controller action $response = $next($request); // do something after the controller action return $response; } }
Kod ini menunjukkan perisian tengah yang paling mudah, di mana kaedah pemegang diperlukan. Ia menerima objek Permintaan dan penutupan $next. Dalam penutupan, middleware atau pengawal sasaran atau kaedah tindakan seterusnya dipanggil, dan akhirnya respons dikembalikan. Kita boleh menambah logik kita sendiri sebelum dan selepas panggilan $next.
Mengkonfigurasi middleware:
// 全局中间件 return [ // 使用定义的中间件类名称或闭包 ppmiddlewareSampleMiddleware::class, ];
// 路由中间件 return [ // 定义中间件名称和对应中间件类名称或闭包 'auth' => ppmiddlewareAuth::class, // 为指定路由添加中间件 'admin' => ['auth', 'log'], ];
Di bawah, kami akan menggunakan contoh mudah untuk menggambarkan cara menggunakan middleware dalam ThinkPHP6.
Andaikan kita sedang membangunkan aplikasi web di mana kita perlu merekodkan masa tindak balas setiap laluan. Menambah fungsi ini dalam rangka kerja web bermakna kita perlu menambah kod dalam setiap kaedah pengawal. Menggunakan perisian tengah boleh mengekstrak kod ini daripada kaedah pengawal, memudahkan kod dan meningkatkan kebolehselenggaraan.
<?php declare (strict_types=1); namespace appmiddleware; use thinkRequest; use thinkResponse; class CustomMiddleware { public function handle(Request $request, Closure $next): Response { $startTime = microtime(true); $response = $next($request); $endTime = microtime(true); $response->header('X-Response-Time', $endTime - $startTime); return $response; } }
Perisian tengah ini akan merekodkan masa mula dan masa tamat setiap permintaan dan menambah masa tindak balas pada pengepala respons.
Dalam fail app/middleware.php, tambah CustomMiddleware pada middleware global atau middleware penghalaan.
// 全局中间件 return [ ppmiddlewareCustomMiddleware::class, ];
Atau tambah perisian tengah untuk laluan yang ditentukan dalam definisi laluan.
use appmiddlewareCustomMiddleware; Route::get('hello/:name', 'index/hello')->middleware(CustomMiddleware::class);
Kini kami telah berjaya menambah perisian tengah baharu pada aplikasi kami. Setiap kali permintaan dibuat, CustomMiddleware menangkap masa permintaan dan masa tindak balas dan menambah masa respons pada pengepala respons.
Perisian tengah ialah alat yang sangat berguna dalam pembangunan web yang boleh membantu kami membahagikan kod kami kepada komponen yang lebih kecil dan lebih fokus. Dalam ThinkPHP6, middleware ialah ciri berkuasa yang boleh membantu kami memudahkan kod dan meningkatkan kebolehselenggaraan. Saya harap artikel ini dapat membantu anda memahami idea perisian pertengahan ThinkPHP6 dan aplikasi praktikalnya.
Atas ialah kandungan terperinci Memahami perisian tengah ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!