PHP
Middleware deseni
Middleware deseninin ne olduğunu ve istek işleme akışındaki yerini öğrenirsin.
Middleware nedir?
Bir web uygulamasında istek işlenirken arka arkaya çalışan callable'lara middleware denir. Her biri $request alır, bir şey yapar (logla, doğrula, değiştir) ve $next($request) ile sonraki adıma devreder.
Bu desene pipeline ya da filter chain denir. Her middleware bir halkadır; istek ileri, yanıt geri akar. Tek bir fonksiyonun her şeyi yapmasından daha temiz ve yeniden kullanılabilirdir.
PHP'de middleware genellikle Closure veya sınıf metodu olarak yazılır; $next bir sonraki middleware'i temsil eder.
Before/After mantığı
Bir middleware $next($request) çağrısını ortalara koyarsan, öncesinde ve sonrasında kod çalıştırabilirsin. Çağrıdan önceki kısıma before, sonrasındaki kısıma after denir.
Bu onion model (soğan modeli) olarak da bilinir: istek katmanlar arasından içeri girer, en içteki işleyici yanıtı üretir, sonra yanıt katmanlar arasından dışarı çıkar.
Örneğin echo 'before'; $r = $next($req); echo 'after'; yazdığında 'before' önce, 'after' sonra yazılır. $next'in döndürdüğü yanıtı değiştirebilirsin.
Uygulama before/after middleware yaz
Bir loggingMiddleware($request, $next) fonksiyonu tanımla. $next çağrılmadan önce echo "before", çağrıdan sonra echo "after" yaz. $next($request) çağrısı "İŞLENDİ" döndürür. Son olarak loggingMiddleware("istek", $handler) çağrısının döndürdüğü yanıtı yazdır.
Örnek çözümü göster
function loggingMiddleware($request, $next) { echo "before\n"; $response = $next($request); echo "after\n"; return $response; } yaz. Sonra echo loggingMiddleware("istek", $handler) . "\n"; çağır.
Örnek çözüm:
<?php
function loggingMiddleware($request, $next) {
echo "before\n";
$response = $next($request);
echo "after\n";
return $response;
}
$handler = function ($request) {
return "İŞLENDİ";
};
echo loggingMiddleware("istek", $handler) . "\n";
Kendini test et
-
Middleware'in temel görevi nedir?
- Doğrudan veritabanına yazmak
- İsteği işleyip sonraki adıma devretmek
- HTML sayfası üretmek
- PHP eklentisi yüklemek
Cevabı göster
İsteği işleyip sonraki adıma devretmek — Doğru. Middleware isteği işler ve $next ile bir sonraki adıma devreder.
-
$next parametresi
function loggingMiddleware($request, ____) {
return $next($request);
}
Cevabı göster
function loggingMiddleware($request, $next) {
return $next($request);
}
-
Middleware parçalarını eşleştir
- $next
- Sonraki işleyici
- callable
- Çağrılabilir işlev
- before
- $next'ten önceki kısım
- after
- $next'ten sonraki kısım
Sıradaki ders: Request/Response döngüsü