Goed, ik ben druk aan het PHPen en loop even op een probleempje waarvan ik de oplossing niet zie. Volgens mij is het wat vaker voorkomt bij OO programmeren, maargoed.
Het zit alsvolgt; Ik heb twee abstracte klassen:
Nu heb ik andere klassen die deze abstracte klassen uitbreiden:
Nu is het probleem dat het laatste in PHP (net als in bijv. Java) niet mag. Het is onmogelijk meer dan 1 klasse te extenden.
In eerste instantie had ik Container extends Element. Alleen geeft dit problemen omdat niet alle Containers Elementen zijn en visa versa.
Toen kwam een extra klasse in mij op, maar ExtraKlasse extends Container, Element mag natuurlijk net zo goed niet. Dus hier kom ik ook geen steek mee verder.
Zoals ik in het begin al zei lijkt het mij dat OO programmeurs die Java, PHP of een andere taal gebruiken waarin je maar 1 klasse mag extenden gebruiken dit probleem vaker tegenkomen. Dus er zal ook vast een slimme oplossing voorbestaan! Dus als iemand de oplossing weet of slimme ideeen heeft zou ik ze graag horen!
Het zit alsvolgt; Ik heb twee abstracte klassen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| abstract class Element { function foo() { echo "FooElement!"; } } abstract class Container { function bar() { echo "BarContainer!"; } } |
Nu heb ik andere klassen die deze abstracte klassen uitbreiden:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| class Page extends Container { function pag() { echo "PageExtendsContainer!"; } } class Image extends Element { function img() { echo "ImageExtendsElement!"; } } class Paragraph extends Container, Element { function par() { echo "Oh no, ERROR!"; } } |
Nu is het probleem dat het laatste in PHP (net als in bijv. Java) niet mag. Het is onmogelijk meer dan 1 klasse te extenden.
In eerste instantie had ik Container extends Element. Alleen geeft dit problemen omdat niet alle Containers Elementen zijn en visa versa.
Toen kwam een extra klasse in mij op, maar ExtraKlasse extends Container, Element mag natuurlijk net zo goed niet. Dus hier kom ik ook geen steek mee verder.
Zoals ik in het begin al zei lijkt het mij dat OO programmeurs die Java, PHP of een andere taal gebruiken waarin je maar 1 klasse mag extenden gebruiken dit probleem vaker tegenkomen. Dus er zal ook vast een slimme oplossing voorbestaan! Dus als iemand de oplossing weet of slimme ideeen heeft zou ik ze graag horen!