Ik ben al een tijdje aan het zoeken naar de 'beste' oplossing, maar ik weet het nog niet helemaal..
Stel je het volgende voor:
Ik heb een class:
Dit zit in een systeem dat ik dmv. plugins wil uitbreiden.
Nu kan ik dit dmv. extends natuurlijk doen.
Maar dit levert een probleem op bij een reeds uitgerold systeem:
Ik moet alle initialisaties van de class, dus bv.
vervangen door
Dit is op zich nog wel te overzien maar natuurlijk niet echt handig.
Het liefst zou ik een directory maken met daarin per method een file'tje dat automatisch in de class wordt 'geincluded'.
Dit is ook nog wel te maken. (Voor een voorbeeld zie hier)
Best een aardig systeem, maar het is daarmee niet mogelijk om een method via een plugin te 'overriden'.
En daar zit dus precies het punt. Ik wil graag in een draaiend 'systeem' een php-plugin kunnen toevoegen (bestandje in dir zetten) waarbij het ook mogelijk is een evt. method te overriden zonder dat ik verder ook maar iets aan het systeem hoef aan te passen. Dus als ik de plugin verwijder alles weer terug bij het oude is.
Een van de mogelijkheden daarvoor is gebruik te maken van de PHP Classkit. Dat is een PECL module. Hiermee is het zelf mogelijk runtime een complete class te vervangen, methods te renamen, verwijderen toe te voegen of te redefinen. Precies wat ik zoek dus eigenlijk. Maar het probleem is ook meteen duidelijk. Er zullen weinig hosters zijn die deze module aanbieden/hebben of ertoe genegen zijn deze te installen. En zelf includen is er ook niet bij volgens mij. (Correct me if I'm wrong!)
De vraag dus: Hebben of kennen jullie andere oplossingen om dit probleem op te lossen? Hoe zouden jullie dit doen.
Stel je het volgende voor:
Ik heb een class:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| class tekenen { function tekenCirkel(){ // Teken een cirkeltje doiets(); // } fucntion tekenVierkant(){ // teken een vierkantje doietsanders(); // } } |
Dit zit in een systeem dat ik dmv. plugins wil uitbreiden.
Nu kan ik dit dmv. extends natuurlijk doen.
PHP:
1
2
3
4
5
6
7
| class beterTekenen extends tekenen { function tekenSter(){ // teken een ster donogiets(); // } } |
Maar dit levert een probleem op bij een reeds uitgerold systeem:
Ik moet alle initialisaties van de class, dus bv.
PHP:
1
| $tek=new tekenen(); |
vervangen door
PHP:
1
| $tek=new beterTekenen(); |
Dit is op zich nog wel te overzien maar natuurlijk niet echt handig.
Het liefst zou ik een directory maken met daarin per method een file'tje dat automatisch in de class wordt 'geincluded'.
Dit is ook nog wel te maken. (Voor een voorbeeld zie hier)
Best een aardig systeem, maar het is daarmee niet mogelijk om een method via een plugin te 'overriden'.
En daar zit dus precies het punt. Ik wil graag in een draaiend 'systeem' een php-plugin kunnen toevoegen (bestandje in dir zetten) waarbij het ook mogelijk is een evt. method te overriden zonder dat ik verder ook maar iets aan het systeem hoef aan te passen. Dus als ik de plugin verwijder alles weer terug bij het oude is.
Een van de mogelijkheden daarvoor is gebruik te maken van de PHP Classkit. Dat is een PECL module. Hiermee is het zelf mogelijk runtime een complete class te vervangen, methods te renamen, verwijderen toe te voegen of te redefinen. Precies wat ik zoek dus eigenlijk. Maar het probleem is ook meteen duidelijk. Er zullen weinig hosters zijn die deze module aanbieden/hebben of ertoe genegen zijn deze te installen. En zelf includen is er ook niet bij volgens mij. (Correct me if I'm wrong!)
De vraag dus: Hebben of kennen jullie andere oplossingen om dit probleem op te lossen? Hoe zouden jullie dit doen.