PHP çerçevelerinde neden “rota” kavramı kullanılıyor?


31

Bunu sormamın nedeni, bir PHP betiğinin bir rota olmadığı için mi? Örneğin, bir article.php varsa o zaman rotanız basitçe http://mysite.com/article.php'dir .

Önceden basit bir dosya olarak var olan bir rota kavramını neden daha da soyutlayın?

Yanıtlar:


44

Bir yönlendiricinin ne yaptığını anlamak için, önce bir yeniden yazma motorunun ne olduğunu anlamanız gerekir. Gönderen Wikipedia makalesinin (vurgu benim):

Yeniden yazma motoru, bir web URL'sinin görünümünü değiştiren bir yazılımdır (URL yeniden yazma). Yeniden yazılmış URL'ler (bazen kısa, süslü URL'ler veya arama motoru dostu - SEF olarak da bilinir), web sayfalarına daha kısa ve daha alakalı görünen bağlantılar sağlamak için kullanılır. Teknik, bir web sayfası oluşturmak için kullanılan dosyalar ile Dünyaya sunulan URL arasında bir dereceye kadar bir boşluk ekler .

Yeniden yazma motoru kullanıldığında, URL ile bir PHP betiği arasında 1: 1 korelasyonunuz yoktur. Aynı makaleden bir örnek:

http://example.com/wiki/index.php?title=Page_title

olarak yeniden yazılabilir:

http://example.com/wiki/Page_title

Tekniği kullanmanın çeşitli yararları vardır . PHP genellikle Apache ile sıkıca bağlandığından, en sık kullanılan yeniden yazma motoru Apache'nin mod_rewrite'ıdır .

URL’leri yeniden yazmak istiyorsanız, yönlendirme URL’yi alma, bileşenlere ayırma ve aranacak asıl komut dosyasının ne olduğuna karar verme işlemi olduğundan, bir tür yönlendirmeye ihtiyacınız vardır. Standart yönlendirici için dokümantasyon sayfasından Zend Framework sürecini olarak açıklıyor:

Yönlendirme, bir URI bitiş noktası (temel URL'den sonra gelen URI'nin bir kısmı) alma ve bu denetleyicinin hangi modülü, denetleyiciyi ve eylemi isteğini alacağını belirlemek için parametrelere ayırma işlemidir.

Günümüzde PHP çerçevelerinin çoğu MVC modeline dayanmaktadır ve MVC çerçevesine göre süreç şu şekildedir * :

  1. Tarayıcı bir URL’ye
  2. Web sunucusu isteği yakalar ve bunu genellikle bir index.phpkomut dosyası olan ortak bir giriş noktasına iletir ,
  3. index.php URL'yi alır ve yönlendirme işlemini başlatır.
  4. URL, birinci denetleyici, ikincisi eylem yöntemi ve geri kalan dinamik parametreler olarak kabul edilir, parametrelere ayrıştırılır,
  5. İlk parametreye uyan bir kontrol sınıfı varsa, bir kontrol nesnesi başlatılır,
  6. Genellikle denetleyici nesnesinin bir işlevi olan eylem yöntemi çağrılır ve geri dönüşü gerçekte tarayıcıya döndürülen şeydir.

Parametreleri denetleyicilerle ve yöntemlerle eşleştirmek, genellikle yollar olarak bilinen karmaşık ve dinamik yönlendirme desenlerini işleyebilmek için normal ifadelerle eşleştirmeyi kullanır . CodeIgniter'ın URI Yönlendirme dokümantasyon sayfasında iyi rota örnekleri bulunabilir :

$ route ['journals'] = "bloglar";

$ route ['blog / joe'] = "bloglar / kullanıcılar / 34";

$ route ['product / (: any)'] = "catalog / product_lookup";

$ rota ['ürün / (: num)'] = "katalog / ürün_göstergesi_by_id / $ 1";

$routeDizi anahtarları olarak desenler ve değerler olarak ortaya çıkan eylemler tutan controller/action_method/dynamic_parameterbiçimi.

* Bu, kanonik sürecin bir açıklaması olarak tasarlanmamıştır, sadece basitleştirilmiş bir açıklamadır.


15
Herhangi bir "gönderme" türevi kullanmadan mvc yönlendiricisini tanımlamak için bir rozet olmalı ...
yannis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.