Ik heb een - in mijn inziens - raar probleem met inheritence tussen twee classes en verschillende visibility tussen de constructors van deze classes. Ik ben bezig met het in elkaar zetten van wat classes die me kunnen helpen met Dependency Injection.
Ik heb een Container class, die simpelweg een interface biedt om variabelen op te slaan en te vragen. De constructor van deze class is public. De class die de Container class extend heet ServiceContainer en is bedoelt te gebruiken als Singleton (constructor uit het zicht met een statische methode om de class zelf te callen), zodat ik overal de ServiceContainer kan aanspreken.
Nu het probleem: Zodra ik de ServiceContainer aanroep dmv ServiceContainer::init(args) en bij beide classes de visibility van de constructors verschilt, valt PHP in stilte dood. Ik krijg geen waarschuwing oid.
De classes:
Iemand die me opweg kan helpen?
Ik heb een Container class, die simpelweg een interface biedt om variabelen op te slaan en te vragen. De constructor van deze class is public. De class die de Container class extend heet ServiceContainer en is bedoelt te gebruiken als Singleton (constructor uit het zicht met een statische methode om de class zelf te callen), zodat ik overal de ServiceContainer kan aanspreken.
Nu het probleem: Zodra ik de ServiceContainer aanroep dmv ServiceContainer::init(args) en bij beide classes de visibility van de constructors verschilt, valt PHP in stilte dood. Ik krijg geen waarschuwing oid.
De classes:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| class Container implements \ArrayAccess { protected $values; public function __construct (array $values = array()) { $this->values = $values; } /* ... */ } class ServiceContainer extends Container { protected static $instance; protected $storage; protected function __construct($storage) { $this->storage = $storage; } public static function init(ServiceStorageInterface $storage) { return static::$instance = new static($storage); } public static function getInstance() { if ( ! isset(static::$instance)) { throw new Exception('ServiceContainer is not initialized'); } return static::$instance; } /* ... */ } |
Iemand die me opweg kan helpen?