Tahmin edebileceğiniz gibi, bunu yapmak için pek çok yolu vardır.
Örneğin, Slim Framework olarak, yönlendirme motoru bir örnek olabilir folllowing (modeline dayanarak ${OBJECT}->${REQUEST METHOD}(${PATTERM}, ${CALLBACK})
):
$app->get("/Home", function() {
print('Welcome to the home page');
}
$app->get('/Profile/:memberName', function($memberName) {
print( 'I\'m viewing ' . $memberName . '\'s profile.' );
}
$app->post('/ContactUs', function() {
print( 'This action will be fired only if a POST request will occure');
}
Yani, başlatılan örneği ($app
) (örneğin, yazı almak koymak, silme vb) isteği yöntemine göre bir yöntem alır ve ikinci olarak ilk parametre ve geri arama gibi bir yol alır.
(- Bilirsin, sadece her yönlendirme denetleyicisi gibi bu tür üye adı, makale id, kuruluş yeri adı ya da her neyse), bazı verilere dayalı zamanında değişecek "değişken" dir - rota belirteçleri alabilirsiniz.
Şahsen, bu şekilde seversin ama gelişmiş bir çerçeve için yeterince esnek olacak sanmıyorum.
Ben ZF ve Yii ile şu anda çalışıyorum beri, ben ne için çalışıyorum bir şirket için bir çerçevenin parçası olarak yarattık yönlendirici bir örnek var:
Rota motor (@ gradbot ait benzer) regex dayalı, ancak iki yönlü bir konuşma var, bu yüzden senin bir istemci (Apache) mod_rewrite'ın çalıştırmak ya da onun sunucuda kuralları yeniden ekleyebilirsiniz olamaz eğer, o Hala sorgu dizesi ile geleneksel URL'leri kullanabilirsiniz.
Dosya bir dizi, bunu her biri, her bir öğe bu örneğe benzer içerir:
$_FURLTEMPLATES['login'] = array(
'i' => array( // Input - how the router parse an incomming path into query string params
'pattern' => '@Members/Login/?@i',
'matches' => array( 'Application' => 'Members', 'Module' => 'Login' ),
),
'o' => array( // Output - how the router parse a query string into a route
'@Application=Members(&|&)Module=Login/?@' => 'Members/Login/'
)
);
Ayrıca gibi daha karmaşık kombinasyonlarını kullanabilirsiniz:
$_FURLTEMPLATES['article'] = array(
'i' => array(
'pattern' => '@CMS/Articles/([\d]+)/?@i',
'matches' => array( 'Application' => "CMS",
'Module' => 'Articles',
'Sector' => 'showArticle',
'ArticleID' => '$1' ),
),
'o' => array(
'@Application=CMS(&|&)Module=Articles(&|&)Sector=showArticle(&|&)ArticleID=([\d]+)@' => 'CMS/Articles/$4'
)
);
Alt satırda, ben düşünüyorum, sadece bağlıdır, olasılıklar sınırsız olduğunu ne kadar karmaşık sizin çerçeve olmak isteyen ve ne onunla yapmak istiyoruz.
Eğer durum bu ise, örneğin, sadece bir web hizmeti veya basit web sitesi sarıcı olması amaçlanmıştır - sadece yazma Slim çatınızdaki tarzı ile gitmek - çok kolay ve iyi görünümlü kodu.
Bunu kullanarak karmaşık siteleri geliştirmek istiyorsanız Ancak, ben regex çözüm olduğunu düşünüyorum.
İyi şanslar! :)