Binnen mijn cms'je lees ik de url uit die opgevraagd wordt (bijvoorbeeld site.com/fruit). Vervolgens loop ik door de $map array (die uit een database komt) en kijk of ik 'fruit' in die array kan vinden. Zo ja, dan retourneer ik het interne pad van die url (hier: story/view/3).
Nu kan het ook zijn dat iemand site.com/story/view/3 rechtstreeks intikt in zijn browser. In dat geval zoek ik mbv de $map2 array de verwijzende url op en redirect de gebruiker dan naar die url:
Ik vind het alleen helemaal niet netjes dat ik twee bijna identieke array's gebruik voor deze bewerkingen; al is het maar om de verloren extra resources om die tweede array samen te stellen. Het tweede deel van de redirect_visitor functie (regel 25 tot 29) wil ik graag herschrijven zodat deze ook van $map gebruik maakt. Ik zit er nu al een tijdje over na te denken, en denk dat ik voor het tweede deel met in_array zal moeten werken ( while ($path && !in_array($path, $map)), etc) maar heb twee vragen hierover:
Nu kan het ook zijn dat iemand site.com/story/view/3 rechtstreeks intikt in zijn browser. In dat geval zoek ik mbv de $map2 array de verwijzende url op en redirect de gebruiker dan naar die url:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| $map[fruit] = array('path' => 'story/view/3', 'nid' => 3); $map[fruit/geel] = array('path' => 'store/add/2', 'nid' => 12); $map[fruit/geel/citrus] = array('path' => 'mail/4', 'nid' => 1); $map2[story/view/2] = array('url' => 'fruit', 'nid' => 3); $map2[store/add/2] = array('url' => 'fruit/geel', 'nid' => 12); $map2[mail/4] = array('url' => 'fruit/geel/citrus', 'nid' => 1); // etc... function redirect_visitor($input) { global $map, $map2; $url = $input; while ($url && !$map[$url]) $url = substr($url, 0, strrpos($url, '/')); if ($map[$url]['path']) echo 'gevonden!'; } else { $path = $input; while ($path && !$map2[$path]) $path = substr($path, 0, strrpos($path, '/')); if ($map2[$path]) refresh('header', $map2[$path]['url']); else return $input; } } redirect_visitor($_GET['q']); // in dit geval is $_GET['q'] 'fruit' |
Ik vind het alleen helemaal niet netjes dat ik twee bijna identieke array's gebruik voor deze bewerkingen; al is het maar om de verloren extra resources om die tweede array samen te stellen. Het tweede deel van de redirect_visitor functie (regel 25 tot 29) wil ik graag herschrijven zodat deze ook van $map gebruik maakt. Ik zit er nu al een tijdje over na te denken, en denk dat ik voor het tweede deel met in_array zal moeten werken ( while ($path && !in_array($path, $map)), etc) maar heb twee vragen hierover:
- is dat ueberhaupt mogelijk
- Is er volgens jou veel tijdswinst te behalen door het herschrijven van het tweede deel met in_array en andere (relatief zware) array - zoekfuncties (die je m.i. nodig hebt hiervoor) boven het compilen van twee bijna identieke array's?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."