paden / configuratie
Ik wil een pad als volgt kunnen aanroepen.
Code (php)
De paden staan als array in een configuratie-bestand en middels onderstaande code worden van de arrays objecten gemaakt:
Code (php)
Maar nu heb ik 2 problemen. Hoe kan ik op een logische manier de paden in het configuratiebestand plaatsen? Ik heb het nu op een dusdanige manier gedaan dat de arrays door het bovenstaande script worden omgevormd tot object. Dit werkt, maar ik moet heel veel subkeys gebruiken (niet handig). Probleem 2: ik moet overal een 'root' key aan toevoegen om de directory te kunnen opvragen.
Met die laatste opmerking bedoel ik het volgende. Ik kan de onderstaande directory niet aanroepen:
$paths->private->configuration;
"Configuration" is namelijk een array met subkeys en wordt daarom niet als property weggeschreven (hopelijk begrijpt iemand wat ik bedoel). Ik moet dus een key opgeven, in dit geval 'root'. En dan krijg je dus dit:
$paths->private->configuration->root;
Maar dat vind ik dus helemaal niet handig, want ik wil gewoon dit kunnen doen:
$paths->private->configuration;
Ik heb de paden nu als volgt in mijn configuratiebestand staan (zie hieronder), maar ik wil dat graag wijzigen naar een meer logische manier, maar ik heb echt geen idee hoe. Ik hoop dat iemand me kan helpen of een duwtje in de juiste richting kan geven want ik zie het echt even niet meer. Zo staan de paden nu in m'n configuratiebestand:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$paths = array();
$paths['private'] = array();
$paths['private']['root'] = '';
$paths['private']['configuration'] = array();
$paths['private']['configuration']['root'] = 'configuration/';
$paths['private']['configuration']['database'] = array();
$paths['private']['configuration']['database']['root'] = 'configuration/database';
$paths['private']['configuration']['database']['pdo'] = 'configuration/database/pdo';
?>
$paths = array();
$paths['private'] = array();
$paths['private']['root'] = '';
$paths['private']['configuration'] = array();
$paths['private']['configuration']['root'] = 'configuration/';
$paths['private']['configuration']['database'] = array();
$paths['private']['configuration']['database']['root'] = 'configuration/database';
$paths['private']['configuration']['database']['pdo'] = 'configuration/database/pdo';
?>
Tja, dit moet vast beter kunnen, maar hoe in godsnaam?
Wat ik dus wil is dat de paden handiger in het configuratiebestand komen te staan (zonder al die subkeys) en dat ik niet de key 'root' hoef te gebruiken, dus dat ik dit kan doen:
$paths->private->configuration;
in plaats van dit
$paths->private->configuration->root;
Alvast heel veel dank voor degene die me een eindje op weg helpt!!!!
Of met een get methode ophalen?
Ik doe het meestal op de volgende manier:
Code (php)
1
2
3
4
2
3
4
$this->path['SITE'] = 'http://www.' . $request->serverData['SERVER_NAME'] . '/' . $MAP;
$this->path['IMAGES'] = 'http://www.' . $request->serverData['SERVER_NAME'] . '/' . $MAP . 'assets/images/';
$this->path['CSS'] = 'http://www.' . $request->serverData['SERVER_NAME'] . '/' . $MAP . 'assets/css/';
$this->path['JS'] = 'http://www.' . $request->serverData['SERVER_NAME'] . '/' . $MAP . 'assets/js/';
$this->path['IMAGES'] = 'http://www.' . $request->serverData['SERVER_NAME'] . '/' . $MAP . 'assets/images/';
$this->path['CSS'] = 'http://www.' . $request->serverData['SERVER_NAME'] . '/' . $MAP . 'assets/css/';
$this->path['JS'] = 'http://www.' . $request->serverData['SERVER_NAME'] . '/' . $MAP . 'assets/js/';
En het zijn een soort mappen (dat is me duidelijk). Dan is het juist logisch en beter als je $paths->private->configuration->root gebruikt i.p.v. $paths->private>configuration.
Waarom vind jij het beter om wel root te gebruiken? Ik vind dat juist onhandig namelijk. Maar heb jij een oplossing? Ik zou graag weten hoe ik dit beter kan doen, vooral ook de opbouw van de arrays. Ik vind dit soort arrays nou niet echt charmant:
$paths['private']['configuration']['database']['pdo'] = 'configuration/database/pdo';
Ik hoop dat je me kan helpen!
@Tom: ik wil geen defines gebruiken. Dat vind ik niet zo netjes in OOP. De manier met een configuratiebestand vind ik op zich prima, maar ik moet even de juiste manier zien te vinden en dat lukt me dus niet.
En een andere manier voor die lange arrays:
Wat betreft defines... ik heb gehoord dat je zaken zo min mogelijk globaal moet maken en zo veel mogelijk moet koppelen aan een specifieke class. Vandaar mijn opmerking.
Ook constants kan je koppelen aan een klasse. En sommige constants zijn heel handig om gewoon globaal te gebruiken. Denk bijv. aan ROOT, LIB_ROOT, APP_ROOT, CONFIG_ROOT, enz.
ja, oke... dat wel... maar al m'n paden heb ik liever gekoppeld aan m'n paths class :)