Ik heb de volgende code:
Echter, ik krijg de volgende output:
Het probleem is dat static properties niet aan inheritance doen. Een bug die in PHP6 opgelost zal worden, maar daar kan ik niet op wachten
Iemand een idee hoe dit opgelost kan worden? Ik heb de code hierboven van http://socket7.net/article/php-5-static-and-inheritance (mijn eigen code is wat ingewikkelder), daar staat wel een 'oplossing' in de comments maar ten eerste werkt hij hier niet (er wordt $this gebruikt terwijl die context er niet is) en ten tweede vind ik het een beetje een omslachtige manier om een extra method ervoor te maken.
Mijn vraag is of iemand een werkende oplossing kent.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <?php class Animal { protected static $color = 'Black'; public static function getColor() { return self::$color; } } class Cat extends Animal { protected static $color = 'Brown'; } class Dog extends Animal { protected static $color = 'Grey'; } ?> |
Echter, ik krijg de volgende output:
PHP:
1
2
3
4
5
| <?php echo Animal::getColor(); // Black echo Dog::getColor(); // Black (huh?) echo Cat::getColor(); // Black (what?) ?> |
Het probleem is dat static properties niet aan inheritance doen. Een bug die in PHP6 opgelost zal worden, maar daar kan ik niet op wachten
Iemand een idee hoe dit opgelost kan worden? Ik heb de code hierboven van http://socket7.net/article/php-5-static-and-inheritance (mijn eigen code is wat ingewikkelder), daar staat wel een 'oplossing' in de comments maar ten eerste werkt hij hier niet (er wordt $this gebruikt terwijl die context er niet is) en ten tweede vind ik het een beetje een omslachtige manier om een extra method ervoor te maken.
Mijn vraag is of iemand een werkende oplossing kent.