[oop] kernel en paden
Ik heb een vraagje. Kent een core/kernel/processor class zelf de paden van het framework?
Bijvoorbeeld, de core class van het framework gaat een algemeen configuratiebestand inladen. Staat in die core class van het framework dan gewoon een variabel $framework_path met een hardcoded pad eraan vast geplakt? Bijvoorbeeld:
Ik zat namelijk eerst te denken om alle paden in een configuratiebestand te zetten en dat ik in plaats van het bovengenoemde zoiets zou doen:
Toen zat ik even verder te denken. Als ID van zo'n pad moet je iets unieks hebben. Je wilt namelijk niet dat de configuratie van het framework wordt verward met de configuratie van een website. Hoe maak je die ID nu uniek? Juist, door de opbouw van het pad te volgen. Aiii... het idee was dus om het voor mezelf makkelijk te maken. Paden in een configuratiebestand zodat ik ze makkelijk kan aanroepen, maar aangezien de ID's van de paden hetzelfde zullen moeten zijn als de paden zelf, vraag ik me af of het überhaupt wel meerwaarde heeft.
Oké, dan de paden maar niet in een configuratiebestand, maar gewoon hardcoded uitschrijven? Maar, mag dat wel in een core/kernel/processor class? Weet zo'n class zelf welke paden hij moet gebruiken?
Gewijzigd op 09/06/2014 11:11:04 door Ozzie PHP
Alles mag, er zijn geen regels.
Wil je het flexibel houden, dan ga je ze niet hardcoden. Mocht je nu toch al weten dat je de paden nooit gaat aanpassen, dan kun je ze lekker hardcoden.
>> Wil je het flexibel houden, dan ga je ze niet hardcoden.
Oké, maar het stomme is... stel ik heb een pad "system/configuration". Die krijg dan als ID ook "system/configuration". Stel dat ik op een dag besluit om dat pad te wijzigen, dan krijg je bijvoorbeeld als id nog steeds "system/configuration", maar als pad "system/var/configuration". Dan zou je dus ook je ID moeten aanpassen. Daarom vraag ik me af of het wel zin heeft.
Of zie ik dat verkeerd?
Waarom zou een ID gelijk moeten zijn aan het path. De ID moet een naampje zijn waar je die configuratie aan herkent. bijv. "main", "service", "system", "routing", etc.
>> En hoe doet (jouw favoriet) Symfony dat dan bijvoorbeeld? Moet jij daar dan wel zelf alle paden in een config bestand zetten of aanpassen?
Symfony heeft maar 1 configuratie bestand. Deze importeert dan weer andere configuratie bestanden. De path naar die ene configuratie bestand wordt bepaald door de AppKernel::getConfigurationPath() method, welke je kan overriden om elk ander path te returnen.
Zijn dit dan paden, of zijn het bestanden?
Een tijdje terug vertelde jij mij dat een ID altijd volledig uniek moet zijn. Over paden zei je toen hetvolgende:
Quote:
Nu is dat hetzelfde met de voorbeelden die jij gaf. Als je /Ozzie/Cms/import/images "images" noemt en er komt nog een images folder bij, dan moet je dus beide "images" gaan hernoemen naar "ozzie_images" en "wouter_images". En stel er komt nog een nieuwe images folder bij in de Ozzie map, dan moet je "ozzie_images" hernoemen naar "ozzie_cms_images" en "ozzie_framework_images". Dit is dus geen goede identifier, het is niet altijd uniek.
Als ik heel simpele woordjes als "main", of bijv. "configuration" zou gebruiken... dan treedt toch hetzelfde probleem op? Over welke main heb ik het? En over welke configuratie? Die van het framework? Die van een website? Die van de back-end? Die van een module...? Volgens mij is de enige manier om dat uniek te maken de structuur van het pad volgen... maar ja... dan ben je dus gewoon een pad aan het overtypen :-s