Další článek o jednoduchém routingu v PHP. Tentokráte ale obráceně ? parametry z adresy už získat umíme, takže teď řešení, jak z pole parametrů získat zpátky adresu.
Routujeme... obráceně
Je sice hezké, když se nám podaří z adresy získat pole parametrů, ale ještě hezčí je, pokud dokážeme z pole parametrů získat zpátky adresu. Tento článek navazuje na a zároveň rozšiřuje ten předchozí, proto si doporučuji nejdříve přečíst „první část“.
Používat na generování adres router oproti přímému výpisu má jednu nespornou výhodu – se změnou rout se změní zároveň i všechny adresy v aplikaci, což je prostě paráda v porovnání s tím, když by se adresy musely měnit růčo – ono by to bylo poznat i u těch malých aplikací, navíc, komu by se zo chtělo dělat? :o)
Takže princip fungování rout zůstává stejný z předchozího článku, ale jelikož při generování adresy je potřeba mít k dispozici všechny routy, rozhodl jsem se, že bude lepší zapouzdřit funkčnost do nějaké třídy – v našem případě Router. Bude obsahovat pouze jednu vlastnost – privátní pole rout routes. Dále pak tři veřejné metody – addRoute() k přidání nové routy, match() k získání pole parametrů z adresy a uri() k získání adresy z pole parametrů – a ještě privátní parseRoute(), jejíž účel je doufám jasný :o)
addRoute() prostě jen naparsuje routu, vytvoří regulár a „zpáteční“ formátovací řetězec pro funkci vsprintf(), která je pak používána k získávání adresy v uri(). Bohužel, ale tady je potřeba již použít mapu kvůli tomu, aby mohly být parametry klíč-hodnota předávány uri() v libovolném pořadí. Netěší mě to, ale je to tak. Další možností by bylo si uschovat naparsovanou routu, ale to už se mi ta mapa zdá elegantnější :o)
Zdroj: Bukaj.netuje.cz