Var van extended class wordt niet doorgegeven
Ik ben bezig met een projectje, en hier zitten een aantal classen in.
Nou heb ik oa. het volgende stukje code (ff gestript):
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
25
26
27
28
29
30
31
32
33
34
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
<?php
class fvCommunityNewsAdmin {
/**
* @var object $_adminHandler The admin data handler.
*/
protected $_adminHandler;
/**
* Constructor
* @version 1.0
* @since 2.0
*/
public function __construct() {
require_once FVCN_DIR . '/scripts/admin-handler.php';
$this->_adminHandler = new fvCommunityNewsAdminHandler();
$this->adminPageSubmissions();
}
/**
* The Submissions Moderation page.
* @version 1.0
* @since 2.0
*/
public function adminPageSubmissions() {
require_once FVCN_DIR . '/scripts/admin-submissions.php';
$adminPage = new fvCommunityNewsAdminPageSubmissions();
}
}
?>
class fvCommunityNewsAdmin {
/**
* @var object $_adminHandler The admin data handler.
*/
protected $_adminHandler;
/**
* Constructor
* @version 1.0
* @since 2.0
*/
public function __construct() {
require_once FVCN_DIR . '/scripts/admin-handler.php';
$this->_adminHandler = new fvCommunityNewsAdminHandler();
$this->adminPageSubmissions();
}
/**
* The Submissions Moderation page.
* @version 1.0
* @since 2.0
*/
public function adminPageSubmissions() {
require_once FVCN_DIR . '/scripts/admin-submissions.php';
$adminPage = new fvCommunityNewsAdminPageSubmissions();
}
}
?>
en de volgende class (ook hier heb ik 't nodige weggehaald):
Code (php)
Het probleem is nu da de var $_adminHandler niet wordt doorgegeven naar deze class (fvCommunityNewsAdminPageSubmissions). Een var dump van $this in de constructor levert het volgende op:
Code (php)
1
2
3
4
2
3
4
object(fvCommunityNewsAdminPageSubmissions)#119 (1) {
["_adminHandler:protected"]=>
NULL
}
["_adminHandler:protected"]=>
NULL
}
Heeft iemand een idee hoe dit komt, en misschien een aantal tips om dit op te lossen? Alvast bedankt!
In je overerving overschrijf je de constuctor, daardoor wordt de constructor van de parent niet meer uitgevoerd. Wil je dit oplossen zal je parent::__construct() moeten aanroepen in je child klasse.
Als je wilt dat ook de constructor van de parent uitgevoerd wordt, zul je dat dus expliciet moeten aanroepen:
In jouw geval wordt $_adminHandler nog niet gevuld dus is hij nog leeg. Precies zoals de var_dump laat ziet...
Hartstikke bedankt!