Anasayfa
AyLabs

PHP Routing Mantığı: Frameworksüz Mini Router Geliştirme

AG

Armağan Gökce

@armagan_gkc

PHP Routing Mantığı: Frameworksüz Mini Router Geliştirme

PHP Routing Mantığı: Frameworksüz Mini Router Geliştirme

PHP ile web uygulamaları geliştirirken, kullanıcıların isteklerini doğru sayfalara yönlendirmek esastır. Bu yönlendirme işlemine routing denir. Genellikle framework'ler bu işi kolaylaştırır, ancak bu yazıda, framework kullanmadan, sıfırdan bir mini router geliştirerek PHP routing mantığını derinlemesine inceleyeceğiz. Amacımız, işin arka planında neler döndüğünü anlamak ve daha sonra framework'lerin sunduğu kolaylıkların değerini daha iyi kavramaktır.

Routing Nedir ve Neden Önemlidir?

Routing, gelen URL'leri (örneğin, `https://example.com/urunler/detay/123`) belirli PHP dosyalarına veya fonksiyonlara eşleme işlemidir. İyi bir routing sistemi, uygulamanızın düzenli, yönetilebilir ve SEO dostu olmasını sağlar. Örneğin, `index.php?sayfa=urunler&id=123` yerine `urunler/detay/123` şeklinde daha anlamlı URL'ler kullanabiliriz.

Mini Router Geliştirme Adımları

Şimdi adım adım basit bir router geliştirelim:

  1. .htaccess Dosyası (Apache İçin): Öncelikle, tüm istekleri `index.php` dosyasına yönlendirmemiz gerekiyor. Bunun için `.htaccess` dosyasına aşağıdaki satırları ekleyin:
  2. RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
  3. index.php Dosyası: Tüm istekler artık `index.php`'ye geliyor. Bu dosyada, `$_GET['url']` parametresini alıp, hangi sayfayı göstereceğimize karar vereceğiz.
  4. <?php
    
    $url = isset($_GET['url']) ? $_GET['url'] : '';
    $routes = [
     '/' => 'controllers/anasayfa.php',
     'urunler' => 'controllers/urunler.php',
     'urunler/detay/([0-9]+)' => 'controllers/urun_detay.php?id=$1',
    ];
    
    $found = false;
    foreach ($routes as $route => $file) {
     $pattern = '#^' . $route . '$#';
     if (preg_match($pattern, $url, $matches)) {
     $found = true;
     include $file;
     break;
     }
    }
    
    if (!$found) {
     include 'controllers/404.php';
    }
  5. controllers Klasörü ve Dosyaları: `controllers` klasöründe, `anasayfa.php`, `urunler.php`, `urun_detay.php` ve `404.php` gibi dosyalar oluşturun. Bu dosyalar, ilgili sayfaların içeriğini gösterecek.

Kodun Açıklaması

  • `.htaccess` dosyası, gelen tüm istekleri `index.php`'ye yönlendirir. `RewriteCond` satırları, dosya veya dizin varsa yönlendirme yapmamasını sağlar.
  • `index.php` dosyası, `$_GET['url']` parametresini alır ve tanımlanmış `routes` dizisi içinde eşleşme arar.
  • `routes` dizisi, URL'leri hangi dosyalara yönlendireceğini belirtir. Düzenli ifadeler (regular expressions) kullanılarak daha karmaşık URL eşleştirmeleri yapılabilir. Örneğin, `urunler/detay/([0-9]+)` ifadesi, `urunler/detay/` ile başlayan ve ardından bir veya daha fazla rakam içeren URL'leri yakalar. Parantez içindeki `([0-9]+)` ifadesi, rakamları `$matches` dizisine kaydeder.
  • `preg_match` fonksiyonu, URL ile `routes` dizisindeki desenleri karşılaştırır. Eşleşme bulunursa, ilgili dosya `include` edilir.
  • Eşleşme bulunamazsa, `404.php` dosyası `include` edilir.

Gelişmiş Routing Özellikleri

Bu mini router, temel routing işlevlerini yerine getirir, ancak daha gelişmiş özellikler de eklenebilir:

  • Parametre Yakalama: Düzenli ifadelerle URL'lerden parametreleri yakalayıp, ilgili dosyalara gönderebilirsiniz.
  • HTTP Metodlarına Göre Routing: Farklı HTTP metodlarına (GET, POST, PUT, DELETE) göre farklı routing kuralları tanımlayabilirsiniz.
  • Middleware: Routing işleminden önce veya sonra çalışacak middleware'ler tanımlayabilirsiniz. Örneğin, kullanıcı yetkilendirme kontrolü yapan bir middleware ekleyebilirsiniz.
  • Özel Hata Sayfaları: 404 gibi hatalar için özelleştirilmiş hata sayfaları oluşturabilirsiniz.

AyLabs Yazılım & Teknoloji ve Routing Çözümleri

AyLabs Yazılım & Teknoloji olarak, web uygulamaları geliştirme konusunda uzmanız ve müşterilerimize en iyi routing çözümlerini sunuyoruz. İster framework kullanın, ister kendi routing sisteminizi geliştirin, doğru routing stratejisi, uygulamanızın başarısı için kritik öneme sahiptir. Kompleks web projelerinizde size özel çözümlerimizle destek olmaktan mutluluk duyarız. Routing mantığını anlamak ve doğru uygulamak, ölçeklenebilir ve sürdürülebilir web uygulamaları geliştirmenin temelidir.

Sonuç

Bu yazıda, PHP'de framework kullanmadan, sıfırdan bir mini router geliştirerek routing mantığını anlamaya çalıştık. Bu bilgiler, framework'lerin sunduğu routing sistemlerini daha iyi anlamanıza ve kendi ihtiyaçlarınıza göre özelleştirmenize yardımcı olacaktır. Unutmayın, routing sadece URL'leri sayfalara yönlendirmekle kalmaz, uygulamanızın mimarisini ve kullanıcı deneyimini de şekillendirir.

Bu yazıyı paylaş
Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu siz yapın!

AyLabs Farkı

Neden Bizi Tercih Etmelisiniz?

AyLabs olarak, işletmenizin dijital dönüşümünde size en iyi hizmeti sunmak için buradayız. Modern teknolojiler, yaratıcı çözümler ve uzman ekibimizle projelerinizi bir adım öteye taşıyoruz.

Uzman Kadro

Alanında deneyimli geliştirici ve tasarımcılarla çalışın.

Modern Teknoloji

En güncel yazılım dilleri ve frameworkler ile geleceğe hazır olun.

Hızlı Teslimat

Projelerinizi zamanında ve eksiksiz teslim ediyoruz.

7/24 Destek

Satış sonrası teknik destek ile her zaman yanınızdayız.