Bu belki de utanmaz self-promosyon, ama ...
PHP Django URL gönderme işlevselliği taklit çalışır (diğer şeyler arasında) bir little framework hangi yazdık. Oldukça (belgeleme şu anda gerçekten çok az) henüz bitmiş değil, ama orada oluyor ... Sen the URL resolver, URL dispatching üzerine wiki makale bulmak ve {[(3)] olabilir } yardımcı ([(4)]} {bakınız).
Diyelim ki düzenli ifadeler ve geri çağrıları arasındaki eşlemeleri içeren bir yapılandırma dosyası var diyelim: Söyledi ile, burada başlamak için küçük bir reçetedir:
<?php
return array(
'{^blog/(?<year>\d+)/(?<slug>[\w-]+)$}' => array('BlogController', 'post'),
'{^about$}' => array('AboutController', 'about'),
// and so on...
);
Bu dizi üzerinde yineleme ve istek URL karşı tuşları maç:
<?php
foreach($urlconf as $pattern => $callback) {
if (preg_match($pattern, $_SERVER['REQUEST_URI'], $matches) !== false) {
return dispatch($callback, $matches); // match
}
}
return handle_404(); // no match
dispatch()
function / denetleyici sınıf örneğini ve ve reflection kullanarak yöntemini incelemek olabilir gerekir. Bu, tipik olarak, URL biçimi, söz konusu yöntem parametreleri ile ilgili eşleşen doğrulama içerecektir. Sizinle yöntemi çağırmak için olan argümanlar toplamak gerekir: Varsayılan argüman olarak doldurulması mevcut ise, adında veya pozisyonel maç vs, hangi parametre, karşılık bulmaktan (bir örnek için this code bakın.) Ardından, denetleyicisi yöntemi URL modeli maçtan argümanlar kullanarak çağrılabilir.
Bu yardımcı olur umarım!
EDIT: Tabii ki, mod_rewrite
veya $_SERVER['PATH_INFO']
hile aynı .php
dosyasına tüm istekleri göndermek için gereklidir. Uygun bir .htaccess
dosya bulunabilir here.