Ik ben bezig met een website waarmee je de functionaliteit kan uitbreiden met modules.
Een module is in feite niets anders dan een los php bestand dat bestaat uit enkele functies. Elke module heeft dezelfde functies zodat de website altijd weet hoe het de modules aan moet spreken. Het krijgt dan ook telkens dezelfde outputvorm terug.
Je kunt niet twee functies maken met dezelfde naam en dezelfde samenstelling van parameters (in PHP ook niet met verschillende parameters). Dat is in principe geen probleem voor de website, aangezien er normaal gesproken maar één module tegelijk geladen wordt (dmv een include()).
Maar op een gegeven moment moet ik twee modules tegelijktijd ingeladen hebben. Dat gaat dus niet want dat levert een 'already declared function' error (ofzoiets) op, want de functies zouden dan dubbel voor komen...
Dat is dus mijn probleem
Ik ben nu op zoek naar een manier om de modules op de een of andere manier toch uit elkaar te houden. Ik heb enkele oplossingen bedacht:
Alle functienamen vooraf laten gaan door de bestandsnaam van de module. De functies kun je dan aanroepen door een trucje in PHP:
Dit levert dus twee keer de output 'Hallo' op. Dit zou ik kunnen gebruiken om de methodes van een module aan te roepen, maar het brengt per aanroep wel een extra aantal stappen met zich mee.
Een andere oplossing zou kunnen zijn om ditzelfde te doen maar dan met classes. De modules herschrijf ik dan naar een classe zodat daar steeds een instantie (object) van gemaakt moet worden voordat de functies aangeroepen kunnen worden. Als nu die classenaam voor elke module anders is (ipv de functienamen) hoef ik veel minder te herschrijven.
Maar ik vraag mij af of bovenstaande 'truc' met functies ook mogelijk is met classes. Het zou veel minder werk zijn om dat te veranderen dan alle functienamen te vervangen.
Voor degenen die mijn verhaal tot hier nog hebben kunnen volgen: is dit mogelijk is, en zo ja: hoe?
Een module is in feite niets anders dan een los php bestand dat bestaat uit enkele functies. Elke module heeft dezelfde functies zodat de website altijd weet hoe het de modules aan moet spreken. Het krijgt dan ook telkens dezelfde outputvorm terug.
Je kunt niet twee functies maken met dezelfde naam en dezelfde samenstelling van parameters (in PHP ook niet met verschillende parameters). Dat is in principe geen probleem voor de website, aangezien er normaal gesproken maar één module tegelijk geladen wordt (dmv een include()).
Maar op een gegeven moment moet ik twee modules tegelijktijd ingeladen hebben. Dat gaat dus niet want dat levert een 'already declared function' error (ofzoiets) op, want de functies zouden dan dubbel voor komen...
Dat is dus mijn probleem
Alle functienamen vooraf laten gaan door de bestandsnaam van de module. De functies kun je dan aanroepen door een trucje in PHP:
PHP:
1
2
3
4
5
6
7
| function sayHello () { print "Hallo!"; } sayHello(); $groet = 'sayHello'; $groet(); |
Dit levert dus twee keer de output 'Hallo' op. Dit zou ik kunnen gebruiken om de methodes van een module aan te roepen, maar het brengt per aanroep wel een extra aantal stappen met zich mee.
Een andere oplossing zou kunnen zijn om ditzelfde te doen maar dan met classes. De modules herschrijf ik dan naar een classe zodat daar steeds een instantie (object) van gemaakt moet worden voordat de functies aangeroepen kunnen worden. Als nu die classenaam voor elke module anders is (ipv de functienamen) hoef ik veel minder te herschrijven.
Maar ik vraag mij af of bovenstaande 'truc' met functies ook mogelijk is met classes. Het zou veel minder werk zijn om dat te veranderen dan alle functienamen te vervangen.
Voor degenen die mijn verhaal tot hier nog hebben kunnen volgen: is dit mogelijk is, en zo ja: hoe?
[ Voor 5% gewijzigd door Priet op 30-05-2004 12:41 ]
"If you see a light at the end of a wormhole, it's probably a photon torpedo!"