Hoi,
Tot op heden gebruikte ik een aantal global variabelen die objecten bevatten. Dit waren objecten die ik overal in de code nodig had, zoals een debugger etc. Omdat ik graag van global variabelen afwil probeer ik mjin framework nu middels overerving deze objecten mee te geven. Zie de volgende (sterk vereenvoudigde) code.
...geeft een error in de constructor van Test2 dat het object test1 leeg is. Na wat inlezen begrijp ik dat dit de bedoeling is, er wordt zelfs aangeraden om vanuit de constructor van het child object expliciet de constructor van de parent aan te roepen. Dat idee spreekt me niet aan, omdat dan voor elk object de parent opnieuw de constructor door moet lopen, en das niet best voor performance en voelt ook onwijs overbodig en lelijk.
Klopt deze aanname, zijn er mooie manieren om hiermee om te gaan en hoe doen anderen dit? Ik wil dus een aantal objecten (maar ook variabelen) altijd bij de hand hebben bij het starten van een class...
Tot op heden gebruikte ik een aantal global variabelen die objecten bevatten. Dit waren objecten die ik overal in de code nodig had, zoals een debugger etc. Omdat ik graag van global variabelen afwil probeer ik mjin framework nu middels overerving deze objecten mee te geven. Zie de volgende (sterk vereenvoudigde) code.
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
| $framework = new Framework($settings); class Framework { public $test1; public $test2; function __construct($settings) { $this->test1 = new Test1(); $this->test2 = new Test2(); } } class Test1 extends Framework { function tester(){ echo "Hello world"; } } class Test2 extends Framework { function __construct(){ $this->test1->tester(); } } |
...geeft een error in de constructor van Test2 dat het object test1 leeg is. Na wat inlezen begrijp ik dat dit de bedoeling is, er wordt zelfs aangeraden om vanuit de constructor van het child object expliciet de constructor van de parent aan te roepen. Dat idee spreekt me niet aan, omdat dan voor elk object de parent opnieuw de constructor door moet lopen, en das niet best voor performance en voelt ook onwijs overbodig en lelijk.
Klopt deze aanname, zijn er mooie manieren om hiermee om te gaan en hoe doen anderen dit? Ik wil dus een aantal objecten (maar ook variabelen) altijd bij de hand hebben bij het starten van een class...