PSR-15 temelleri
PSR-15 middleware arayüzünü ve MiddlewareInterface'i öğrenirsin.
PSR-15 MiddlewareInterface
PSR-15, PHP-FIG tarafından tanımlanan standart middleware arayüzüdür. MiddlewareInterface tek bir metoda sahiptir: process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface.
Bu standart, farklı çatılarda (framework) yazılmış middleware'lerin birbirinin yerine kullanılabilmesini sağlar. Her sınıf aynı imzaya sahip olduğu için zincirleme kolaydır.
$request bir PSR-7 isteğini, $handler ise bir sonraki işleyiciyi temsil eder. $handler->handle($request) çağrısı akışı sürdürür; dönüş değeri bir PSR-7 yanıtıdır.
PSR-15 nasıl çalışır
Bir PSR-15 middleware sınıfında process metodu önce isteğe bakar, gerekirse log yazar ya da doğrulama yapar, sonra $handler->handle($request) çağrısıyla bir sonraki adıma geçer.
RequestHandlerInterface tek bir handle metodu tanımlar. Bu, ya bir sonraki middleware'i ya da en içteki işleyiciyi temsil eder. Her çağrı bir sonrakine zincirlenir.
Bu derste PSR-15'in yapısını basitleştirilmiş sınıflarla taklit edeceğiz: process ve handle metotları aynı imza desenini izler ama PSR-7 bağımlılığı olmadan çalışır.
Uygulama PSR-15 tarzı sınıf yaz
PSR-15 yapısını taklit eden bir LoggingMiddleware sınıfı tanımla. public function process($request, $handler) metodu olsun. Önce echo "[LOG] İstek alındı" yaz, sonra $response = $handler->handle($request) ile yanıtı al, echo "[LOG] Yanıt üretildi" yaz ve $response döndür. FinalHandler zaten tanımlı. Sınıfın örneğini oluştur, process'i çağır ve yanıtı yazdır.
Örnek çözümü göster
class LoggingMiddleware { public function process($request, $handler) { echo "[LOG] İstek alındı\n"; $response = $handler->handle($request); echo "[LOG] Yanıt üretildi\n"; return $response; } } yaz. Sonra $mw = new LoggingMiddleware(); echo $mw->process("istek", new FinalHandler()) . "\n"; çağır.
Örnek çözüm:
<?php
class LoggingMiddleware {
public function process($request, $handler) {
echo "[LOG] İstek alındı\n";
$response = $handler->handle($request);
echo "[LOG] Yanıt üretildi\n";
return $response;
}
}
class FinalHandler {
public function handle($request) {
return "TAMAM";
}
}
$mw = new LoggingMiddleware();
echo $mw->process("istek", new FinalHandler()) . "\n";
Kendini test et
-
process metodu imzası
public function process(ServerRequestInterface $request, ____ $handler): ResponseInterface { return $handler->handle($request); }Cevabı göster
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { return $handler->handle($request); } -
PSR-15 MiddlewareInterface'in process metodu ne döndürür?
- ResponseInterface
- void
- bool
- array
Cevabı göster
ResponseInterface — Doğru. process bir ResponseInterface döndürür; bu PSR-7 yanıttır.
-
PSR-15 kavramlarını eşleştir
- MiddlewareInterface
- process() metodu
- RequestHandlerInterface
- handle() metodu
- ServerRequestInterface
- PSR-7 istek
- ResponseInterface
- PSR-7 yanıt