Var van extended class wordt niet doorgegeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

Advanced Mendix Developer Order Management Systeme

Advanced Mendix Developer Order Management Systemen (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende e-commerce markt? Je doet dit bij PostNL door met je DevOps team onze Mendix applicaties verder te ontwikkelen, waarbij je complexe logistieke business processen vertaalt naar applicaties die ons primaire proces ondersteunen". Wat ga je doen? PostNL wordt een postal tech company We nemen de ontwikkeling van onze IT applicaties in eigen hand door onze eigen software-ontwikkel-capability op te zetten. Als Advanced Mendix Developer ben je onderdeel van een multidisciplinair, agile werkend Business-IT-team. Samen met dit team bouw je onze logistieke IT-applicaties verder

Bekijk vacature »

- -

- -

14/01/2009 15:26:00
Quote Anchor link
Goedenmiddag,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
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!
 
PHP hulp

PHP hulp

21/09/2021 18:54:07
 
Bo az

Bo az

14/01/2009 15:29:00
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

14/01/2009 15:35:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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...
 
- -

- -

14/01/2009 15:38:00
Quote Anchor link
Oke, nu werkt het wel.

Hartstikke bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.