CodeBlanks Logo Icon CodeBlanks

Middleware deseni

PHP kursu · İleri seviye · Ders 67/92

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

  1. 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.

  2. $next parametresi

    function loggingMiddleware($request, ____) {
        return $next($request);
    }
    Cevabı göster
    function loggingMiddleware($request, $next) {
        return $next($request);
    }
  3. 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

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