Afgelopen week postte ik een vraag over hoe je bepaalde informatie voor de rest van je applicatie beschikbaar moet maken: via een functie of een global variabele.
Het idee is dus (vereenvoudigd) als volgt:
Het nadeel hiervan is dat je elke keer opnieuw $q loopt te exploden, wat toch performance kost. Het zou ook zo kunnen:
Maar het probleem is dat je op deze manier een hele riedel aan te globallen variabelen krijgt. Daarom was mijn idee om alle variabelen die je als global in je functies aan wilt halen, in een global array te stoppen. Iemand anders merkte op: stop die array met variabelen anders in $_SERVER of $GLOBAL; dan hoef je ze niet apart te globallen in je functies.
Om te kijken of dit vaker gebeurt, ben ik wat gaan rondbrowsen op GoT. Toen bleek dat een heleboel mensen absoluut tegen het aanhalen van globals in hun functies zijn, omdat dit onduidelijk zou worden. Hoe je het ook oplost. Maar waarom zou een hoeveelheid aan functies wel overzichtelijk zijn en het gebruik van globale variabelen niet? Ik hoor graag jullie reaktie, want ik weet het niet goed meer. Voor de basis van mijn CMS'je (ben het nu aan het herbouwen) wil ik een keuze maken: of een boel variabelen in een global srray stoppen (of die array weer in bv. $_SERVER stoppen) OF middels functies alles oplossen. Op dit moment heb ik het idee om 2 of 3 variabele array's in $GLOBAL te stoppen, die ik in heel mijn applicatie aan kan halen. Zoiets als:
Wat is hier dan zo tegen? Ik ben bang een verkeerde basis voor het systeem te kiezen, of een te omslachtige methode en hoop dus op enkele beargumenteerde antwoorden, liefst anders dan "hangt van je voorkeur af".
Het idee is dus (vereenvoudigd) als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| /** * q is bijvoorbeeld een URL */ function q($index) { if (isset($_GET['q'])) { $q = explode('/', $_GET['q']); return $q[$index]; } else { return false; } } /** * Ergens anders in mijn applicatie wil ik iets over q weten: */ function doe_iets() { if (q(2) == 'maandag') return 'het weekeinde is weer voorbij!'; } |
Het nadeel hiervan is dat je elke keer opnieuw $q loopt te exploden, wat toch performance kost. Het zou ook zo kunnen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| if (isset($_GET['q'])) { $q = explode('$', $_GET['q']); } /** * Ergens anders in mijn applicatie wil ik iets over q weten: */ function doe_iets() { global $q; if (q[2] == 'maandag') return 'het weekeinde is weer voorbij!'; } |
Maar het probleem is dat je op deze manier een hele riedel aan te globallen variabelen krijgt. Daarom was mijn idee om alle variabelen die je als global in je functies aan wilt halen, in een global array te stoppen. Iemand anders merkte op: stop die array met variabelen anders in $_SERVER of $GLOBAL; dan hoef je ze niet apart te globallen in je functies.
Om te kijken of dit vaker gebeurt, ben ik wat gaan rondbrowsen op GoT. Toen bleek dat een heleboel mensen absoluut tegen het aanhalen van globals in hun functies zijn, omdat dit onduidelijk zou worden. Hoe je het ook oplost. Maar waarom zou een hoeveelheid aan functies wel overzichtelijk zijn en het gebruik van globale variabelen niet? Ik hoor graag jullie reaktie, want ik weet het niet goed meer. Voor de basis van mijn CMS'je (ben het nu aan het herbouwen) wil ik een keuze maken: of een boel variabelen in een global srray stoppen (of die array weer in bv. $_SERVER stoppen) OF middels functies alles oplossen. Op dit moment heb ik het idee om 2 of 3 variabele array's in $GLOBAL te stoppen, die ik in heel mijn applicatie aan kan halen. Zoiets als:
PHP:
1
2
3
| $_CONF (alle configuratie variabelen) $_NODE (alle variabelen van de huidige pagina (titel, template etc) $_URL (met info over de url (die ge-explode is) |
Wat is hier dan zo tegen? Ik ben bang een verkeerde basis voor het systeem te kiezen, of een te omslachtige methode en hoop dus op enkele beargumenteerde antwoorden, liefst anders dan "hangt van je voorkeur af".
[ Voor 8% gewijzigd door Reveller op 01-11-2004 20:11 ]
"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."