Bir nesne yönelimli PHP uygulamasında Routing'i uygun şekilde uygulama süreciyle karşı karşıyasın? Routing, her Web uygulaması için merkezi bir bileşendir çünkü gelen URL'lerin hangi mantıksal yapı taşlarına, yani kontrolörlere ve bunların eylemlerine nasıl atanacağını belirler. Bu kılavuz, PHP'deki routing sürecini anlamana ve uygulamana yardımcı olmak amacıyla kontrolörlerin ve eylemlerin atamasını ayrıntılı bir şekilde ele alacaktır.
En önemli bilgiler
- Routing, gelen URL isteklerini belirli kontrolör metodlarına atamayı mümkün kılar.
- Kontrolörlerin ve metodların adlandırılması belirli adlandırma kurallarına uyar, böylece tutarlılık sağlanır.
- PHP Reflection ile belirli kontrolör metodunun var olup olmadığı kontrol edilebilir, böylece çağrılmadan önce doğrulanır.
- Parametreler dikkatlice işlenmeli ve ilişkilendirilmiş metodlara bir eşleme dizisi içerisinde geçirilmelidir.
Aşama Aşama Kılavuz
Aşama 1: Dizin yapısı ve İsim alanı oluşturma
Öncelikle, kontrolör sınıflarını yerleştireceğin Controller adıyla yeni bir dizin oluştur. Bu aşamada, sınıfları mantıklı isim alanlarına ayırman önemlidir. Örneğin:

Sonraki adımda kontrolör için isim alanını tanımlarsın. Bu şu şekilde görünebilir:
Aşama 2: Kontrolör sınıfını tanımlama
Bu aşamada, istediğin kontrolör için bir sınıf oluşturuyorsun. Onu UploadController olarak adlandıralım. Sınıfı başlatmak için temel ayarlar yapman gerekecek. Örneğin:

Bununla birlikte, tüm kontrolör adlarının küçük harflerle formatlandığından emin olmalısın; böylece daha sonraki karışıklıkları önlemiş olursun. Bu hem düzeni sağlar hem de uygulamanın standartlaştırma sürecini sürdürmene yardımcı olur.
Aşama 3: Kontrolör örneği oluşturma
Şimdi kontrolörünün bir örneğini oluşturuyorsun. Bu genellikle, tam sınıf adını kapsayan bir String formatı ile gerçekleştirilir – isim alanı dahil. Örneğin:

İlerleyen mantıkta kolaylık sağlamak için, sınıf varlığını kontrol et, böylece devam etmeden önce doğrulayabilirsin. Bunun için sınıfın var olup olmadığını kontrol eden basit bir if ifadesi kullanabilirsin.
Aşama 4: Eksik kontrolörler için Hata Yönetimi
Eğer kontrolör mevcut değilse, bir exception tetiklemekte fayda vardır. Bu durumda, kullanıcının belirtilen kontrolörün bilinmediğini net bir şekilde anlaması için InvalidArgumentException'ı kullanabilirsin:

Bu durumda bir uyarı verebilirsin, örneğin:
Kontrolör bilinmiyor: [Kontrolör Adı]
Aşama 5: Kontrolör eylemi için paylaşılan parametreler
Bir sonraki adımda, kontrolör için eylemleri ve bunların metodlarını tanımlamak. Bu örnekte, yükleme işlemi için save adında bir metod olduğunu belirliyoruz. PHP'ye, bu metodu kontrolöre entegre etmesi için bir görev verirsin. Bu, tıpkı kontrolörlerde olduğu gibi bir String formatlama ile yapılır:

Bu şekilde, harici çağrıların yalnızca yetkilendirilmiş eylem metodları tarafından kabul edileceğini sağlarsın.
Aşama 6: Eylem metodunu Reflection ile doğrulama
Belirtilen metodun var olduğunu doğrulamak için, PHP'nin Reflection özelliklerini kullanacağız. Bu, ReflectionClass'ı örneklendirerek gerçekleştirilir.

Burada, hasMethod metodunu kullanarak istenen eylem metodunun gerçekten kontrolöründe var olup olmadığını kontrol edersin:
Aşama 7: Parametrelere erişim mantığını uygulama
Kontrolör ve eylem belirlendikten sonra, gelen parametrelerin işlenmesine sıra geldi. Bu parametreler genellikle bir URL segmenti şeklinde ortaya çıkar ve çiftlere ayrılması gerekecektir. Bunun için explode() fonksiyonunu kullanırsın:

Bu aşamada, ayrıca parametre sayısının çift olduğundan emin olmalısın. Eğer bu sağlanmazsa, geçersiz bir parametre sayısı vardır – buradaki durumda da yine InvalidArgumentException önerilmektedir:
Aşama 8: Parametreler için bir ilişkisel dizi oluşturma
Bir sonraki adımda, parametreleri bir ilişkisel diziye dönüştürerek eyleme kolayca geçirebilirsin. Bunu, her anahtar-değer çiftini belirli bir şekilde atayan bir döngü ile gerçekleştirebilirsin:

Bu esnada, anahtarları ve değerleri sırayla alarak bir eşleştirme yapar ve ardından nihai diziyi kontrolör metoduna geçirirsin.
Aşama 9: Kontrolör eylemini çağırma
Şimdi pratik yapma zamanı: Önceden tanımladığın uygun parametrelerle kontrolör metodunu çağırmaya hazırsın. Bunun için kontrolörü örneklendirir ve metodu aşağıdaki gibi çağırırsın:

Son olarak, gerekli tüm adımların doğru bir şekilde yerine getirildiğinden emin ol. Artık PHP uygulamana başarılı bir şekilde routing'ı uygulamış bulunuyorsun.
Özet
Bu metin kılavuzunda, kontrolörler ve eylemler aracılığıyla bir nesne yönelimli PHP uygulamasında routing nasıl gerçekleştirileceğini öğrendin. Dizin yapısından, kontrolörlerin ve metodlarının tanımlanması ve doğrulamasına kadar olan süreç, parametre yönetimine kadar – tüm bunlar, web uygulaman için güçlü bir routing sistemi kurmanı sağlıyor.
Sık Sorulan Sorular
Routing'i PHP'de nasıl uygularım?Routing, URL’lerin kontrolörlere ve bunların eylem metodlarına atanmasıyla organize edilir.
PHP'de kontrolörler nedir?Kontrolörler, isteklerin işlenmesine mantık sağlayan ve ilgili eylem metodlarını çağıran sınıflardır.
Bir eylem metodunun var olduğunu nasıl doğrularım?İlgili kontrolör sınıfında metodun mevcut olup olmadığını kontrol etmek için PHP Reflection kullan.
URL parametrelerini nasıl işlerim?Parametreler çiftler halinde görünmeli ve explode() fonksiyonu ile bir ilişkisel diziye dönüştürülebilir.
Kontrolörüm yoksa ne olur?Bilinmeyen bir kontrolör olduğunu göstermek için ilgili bir exception atmalısın.