CodeBlanks Logo Icon CodeBlanks

PSR-15 temelleri

PHP kursu · İleri seviye · Ders 72/92

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

  1. 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);
    }
  2. 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.

  3. PSR-15 kavramlarını eşleştir

    MiddlewareInterface
    process() metodu
    RequestHandlerInterface
    handle() metodu
    ServerRequestInterface
    PSR-7 istek
    ResponseInterface
    PSR-7 yanıt

İleri seviye bölümündeki tüm dersler