Goedenmiddag,

Ik ben bezig met een projectje, en hier zitten een aantal classen in.

Nou heb ik oa. het volgende stukje code (ff gestript):

<?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();
	}
	
	
}

?>

en de volgende class (ook hier heb ik 't nodige weggehaald):

<?php
class fvCommunityNewsAdminPageSubmissions extends fvCommunityNewsAdmin {
	
	/**
	 *		Constructor
	 *		@version 1.0
	 *		@since 2.0
	 */
	public function __construct() {
		if (!current_user_can('moderate_comments'))
			exit;
		
		// dit geeft NULL als result
		echo $this->_adminHandler;
	}
?>

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:

object(fvCommunityNewsAdminPageSubmissions)#119 (1) {
  ["_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.
Dat is precies zoals je zou verwachten. Als je een instantie van de child aanmaakt, wordt enkel de constructor van de child uitgevoerd niet die van de parent.

Als je wilt dat ook de constructor van de parent uitgevoerd wordt, zul je dat dus expliciet moeten aanroepen:
<?php
public function __construct()
{
parent::__construct();
}
?>
In jouw geval wordt $_adminHandler nog niet gevuld dus is hij nog leeg. Precies zoals de var_dump laat ziet...
Oke, nu werkt het wel.

Hartstikke bedankt!

Reageren