Bu yönlendirici bir veritabanından denetleyicileri aramak için izin için iyi bir fikir mi?

0 Cevap php

PHP MVC tasarım yapıları için öğreticiler çoğunda, bir yönlendirici sınıf kullanıcı girişi almak ve doğru bir şekilde giriş işlemek için doğru denetleyicisi aramak için kullanılır. Girdi normal olarak bir URL şeklini alır. Örneğin http://example.com/foo/bar/ denetleyici adını foo bulmak ve yöntem bar yangın yönlendirici rica ediyorum.

PHP ayrıca sınıfları için kullanılan tutarlı bir adlandırma sistemi gerektirir bir oto-include işlevi vardır. Ben sınıf Foo bir örneğini almak istedim Örneğin, ben foo.php çağrılacak dosya gerekir ve içinde Foo adında bir sınıf olacaktır.

Ne yazık ki, tandem, bu mekanizmaların adlandırma sisteminde rekabet talepleri yerleştirin. Url çok 'bakan ön' ve gibi, müşteriler genellikle belirli bir sayfanın içeriğini yansıtmak gerekir. Örneğin, ben bir mekan yön veren bir sayfa varsa, istemci http://example.com/venues/directions/ olmak için bu sayfayı gerekebilir. Daha sonra içerik değişebilir ve mekanları sayısı 1 azaltılır ve şimdi müşteri okumak için url istediği http://example.com/venue/directions/. Açıkçası, bu çok önemsiz bir örnek ama bazen adresler değiştirmek için ihtiyaç açıktır düşünüyorum.

URL'ler çok sıkı denetleyici sınıflara bağlı olduğundan, bir url bir değişiklik sınıf dosya adını demektir, sınıf adı kendisi ve o sınıfın örneklerini tüm değiştirilmesini gerektirecektir. Daha karmaşık sistemler için bu benim için, çok zaman alıcı görünüyor.

Bu sorunun çözümü ne tür var? Bu tür bir dizin adresler ve denetleyiciler arasındaki ilişkiler herhangi bir url bakılmaksızın ya adlandırılır ne herhangi bir denetleyici aramak için kullanılan olabilir gibi saklandığı gerekli olacaktır gibi geliyor bana. Böylece bir mekanları denetleyicisi ve bir yerleri url olurdu ve müşteri url bir değişiklik istediğinde, biz sadece "mekanları" içine yeni "mekan" çeviri dizininde bir değişiklik yapmak.

Bunu yapmak için en iyi yolu, bir veritabanı tablosunda olacağını düşünüyorum ama bu her kullanıcının isteği için ekstra bir sorgu gerektirir. Bir veritabanı bir dizin uygulamak için doğru yolu nedir? Bir dizin Yukarıdaki sorunu çözmek için bile en iyi yolu nedir? Bu sorun ilk etapta bile bir sorun var mı??

0 Cevap