Variable uit parent class halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front end developer React Sportgames

Functie Als Front end developer ga jij aan de slag bij een gave en bekende organisatie op het gebied van sportgames. Jij gaat aan de slag in een scrumteam met 6 developers die gepassioneerd en actief bezig zijn om spelers kwalitatieve en mooie spelervaringen aan te bieden. Als scrumteam werken ze in drie wekelijkse sprints en begin je iedere ochtend met een stand-up. Als Front end developer werk jij bij deze organisatie voornamelijk met Javascript, html, css en React. Er wordt veel gebruikt gemaakt ook van C#, Docker en Kubernetes. Het team hecht veel waarde aan het leveren van hoogwaardige

Bekijk vacature »

Front-end Developer Angular

Dit ga je doen Jouw taken als Front End Developer bestaan uit: Het ontwikkelen van maatwerkoplossingen voor klanten; Het meedenken over nieuwe tools en technieken; Het begeleiden van junioren; Het meewerken aan diverse projecten; Het meedenken in UX/UI design. Hier ga je werken Als Front-End Developer ga je in een Scrum team aan de slag met de nieuwste digitale technologieën om klanten en overheden over de hele wereld te ondersteunen met het ondersteunen van hun software, veelal op het gebied van watermanagement en infra. Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning

Bekijk vacature »

SAP Integratie Ontwikkelaar

Ben jij ambitieus in de verdere ontwikkeling van SAP binnen HANOS, en heb je kennis van SAP PI, CPI (SAP integration suite) en of andere middleware tooling? Dan ben jij mogelijk onze nieuwe SAP Integratie (middleware) Ontwikkelaar! Lees snel verder en solliciteer! Wat ga je doen? Als SAP Financieel Consultant ben je, als deel van een gedreven team van interne SAP consultants, de schakel tussen de gebruikersorganisatie en ICT. Je draagt proactief bij aan een optimale aansluiting van de SAP-functionaliteit (een applicatielandschap met o.a. Suite on HANA, Fiori, Hybris, C4C en BO), op de bedrijfsprocessen. Verder ondersteun je de HANOS

Bekijk vacature »

Database Developer

Functie omschrijving Voor een logistieke dienstverlener in omgeving Zuid Beijerland zijn wij op zoek naar versterking. Weet jij als geen ander systemen aan elkaar te koppelen en heb jij goede kennis van SQL en UML, lees dan snel verder! Jouw taken zien er als volgt uit: Je bent in deze rol voornamelijk verantwoordelijk voor het bouwen, implementeren en beheren van koppelingen tussen de bestaande systemen (zowel business 2 business als application 2 application). Daarnaast inventariseer je de wensen van in- en externe klanten, die je vervolgens samen met je collega's, vertaalt naar technische specificaties, die jullie zelf ontwikkelen en implementeren.

Bekijk vacature »

Junior Outsystems developer

Functie Als junior Outsystems developer wordt jij onderdeel van een multidisciplinair team van 23 software engineers. Ons team werkt agile en termen als Continuous Integration en Continuous Delivery zijn bij ons dagelijkse koek. Wij werken aan uitdagende en afwisselende projecten met als doel onze klanten een totaal oplossing aan te bieden. Als junior Outsystems developer krijg jij bij ons de kans om jezelf te ontwikkelen naar een volwaardige ervaren en gecertificeerde Outsystems developer. Jij een team met ervaren mensen (10+ ervaring) om je heen. Zo heb jij niet het gevoel dat jij meteen in het diepe wordt gegooid en uiteraard

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Lead Webdeveloper

Als Lead webdeveloper bij KUBUS ben je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de webapplicatie en services van BIMcollab. In je rol als lead developer zoek je als vanzelf op een creatieve manier naar het optimum tussen benodigde implementatie-tijd, de performance van de applicatie en een snelle go-to-market van features, aansluitend bij onze geautomatiseerde test- en release train. Hierbij bewaak je in samenwerking met de andere senior ontwikkelaars in je team de architectuur van de applicatie en adviseer je de product owner over noodzakelijke refactoring om de onderhoudbaarheid van het platform te verbeteren. Ons

Bekijk vacature »

PHP Developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Medior/senior Front-end developer

Functie Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden gebouwd, of grote complexe wijzigingen worden doorgevoerd op bestaande omgevingen. Je kunt (afhankelijk van jouw wensen en doelen) dus afwisselend werken in beide teams. Hiernaast participeer je in het Chapter Front-end development waar gezamenlijk kennis en ervaring wordt gedeeld. Als Front-end developer is het jouw doel

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

Integratie expert - Java Developer

Dit ga je doen Nieuw koppelingen ontwerpen, ontwikkelen en implementeren; Je schakelt met de klanten om hen zo goed mogelijk van dienst te zijn. Strategisch kijken naar nieuwe mogelijkheden op bestaande of nieuwe koppelingen zo effectief mogelijk te realiseren; Je bestaande toolset afwegen tegen nieuwe mogelijkheden om integratiedoelen steeds effectiever en/of effcienter te bewerkstelligen; Bestaande software koppelingen beheren, dit zijn koppelingen met zowel interne als externe systemen; Overleg met zowel directe collega's als met stakeholders om nieuwe integratieplannen concreet te maken; Je kunt de junioren meenemen op sleeptouw. Hier ga je werken Onze klant is op zoek naar een ervaren

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

Bekijk vacature »

Starter/junior PHP developer

Functie Momenteel zijn ze op zoek naar een junior PHP developer om het team te versterken. Als back-end developer bouw je de enterprise software die hun bedrijf helpt bij haar primaire processen. Afhankelijk van de omvang van het project werk je in een klein team aan een project. Ze hebben dagelijkse stand-ups en elke twee weken een scrumsessie, begeleid door de Scrum Master, waar je je ideeën kunt presenteren en samen met de Product Owner kunt werken aan het beste product. Ze vertrouwen enorm op hun eigen bedrijfssoftware. Dit geeft hun een groot voordeel ten opzichte van hun concurrentie. Zo

Bekijk vacature »
Ruben Portier

Ruben Portier

10/02/2013 17:09:06
Quote Anchor link
Beste

Ik heb wat lopen rond zoeken op internet maar kan helaas geen goed werkende oplossing vinden. Ik heb namelijk twee classes.

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
<?php
class A {
  protected $config = array();

  function
__constructor() {
    $this->config[] = 'test';
  }
}


class B extends A {
  function
__constructor() {
    print_r($this->config);
  }
}

?>


Het probleem is nu dat de constructor van class B een lege array terug geeft terwijl de parent wel degelijk iets in de config array geplaatst heeft.

Iemand een idee hoe ik dit kan oplossen? Of moet ik hierbij verplicht static gaan gebruiken?

Bedankt alvast!
Gewijzigd op 10/02/2013 17:09:58 door Ruben Portier
 
PHP hulp

PHP hulp

09/01/2025 20:01:18
 
Wouter J

Wouter J

10/02/2013 17:38:09
Quote Anchor link
In PHP wordt de constructor overriden. Je krijgt nu dus alleen de constructor van B en niet meer die van A. Gebruik parent::__construct() om de parent constructor aan te roepen.
 
Ruben Portier

Ruben Portier

10/02/2013 18:03:36
Quote Anchor link
Bedankt voor je reactie Wouter J. Maar dat is niet echt wat ik bedoel, ik wil namelijk niet de constructor uit de A class aanroepen maar de variable config via class B echoën. Het probleem is dat als class B de config-variable print dan is die leeg, terwijl de parent class (A) die wel al gevuld heeft met iets (test).

Dus als class B de variable config print dan zou je test moeten zien. Dit werkt alleen door een static variable te gebruiken, klopt dit?
 
Wouter J

Wouter J

10/02/2013 18:17:10
Quote Anchor link
Ruben, ik reageerde precies wat jij bedoelde. ;)

Want waar stel je die config property in? Juist ja, in de constructor van A. Wat gebeurd er dus als je in klasse B een constructor maakt? Dan wordt die van A niet meer aangeroepen. En als die van A niet meer aangeroepen wordt blijft de config property dus leeg. En wat gebeurd er als die leeg blijft? Dan zal de var dump in de constructor van B niks tonen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/02/2013 18:39:22
Quote Anchor link
Voorbeeldje misschien?
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
<?php
class A {
  protected $config = array();

  function
__constructor() {
    $this->config[] = 'test';
  }
}


class B extends A {
  function
__constructor() {
    // HIER EERST EVEN DE PARENT CONSTRUCTOR AANROEPEN
    parent::__construct();
    print_r($this->config);
  }
}

?>
 
Ruben Portier

Ruben Portier

10/02/2013 18:48:41
Quote Anchor link
Oke bedankt. Ik had in het voorbeeld de constructor gebruikt. Maar in mijn 'echte' code heb ik het net in de constructor, maar in een gewone public function. En toch blijft hij leeg als ik hem via B aanroep.

EDIT: ik leg het even wat beter uit.

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
<?php
class A {
  protected $var;

  protected function set() {
    $this->var = 'boe';
  }


  protected function get() {
    return $this->var;
  }
}


class B extends A {
  protected function get() {
    return $this->var;
  }
}

?>


Als ik nu volgende code uitvoer zal ik niets terug krijgen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$a
= new A();
$b = new B();

$a->set();
$b->get();
?>


Als ik echter deze code uitvoer, zal het wel lukken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$a
= new A();
$b = new B();

$a->set();
$a->get();
?>
Gewijzigd op 10/02/2013 19:21:38 door Ruben Portier
 
Wouter J

Wouter J

10/02/2013 19:53:58
Quote Anchor link
Dat is toch logisch? Extenden is 'uitbreiden'. die $a en $b zijn 2 totaal andere instances van een klasse, die kunnen niks van elkaar weten. Tenzij je de 1 in de ander injecteert:
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
35
<?php
class A {
  protected $var;

  public function set() {
    $this->var = 'boe';
  }


  public function get() {
    return $this->var;
  }
}


class B
{
    private $a;

    public function setA(A $a)
    {

        $this->a = $a;
    }


    public function get()
    {

        return $this->a->get();
    }
}


$a = new A();
$b = new B();
$b->seta($a);

$a->set();
$b->get(); // >> 'boe'
?>


Tevens kunnen die protecteds bij die methodes ook helemaal niet. Misschien goed om eens de basis te leren: http://phptuts.nl/view/45/
 
Ruben Portier

Ruben Portier

10/02/2013 20:29:50
Quote Anchor link
Bedankt voor je reactie!

Volgens mij kan je toch echt wel protecten function gebruiken?

Via jouw bron:

Voorbeelden van correcte method namen:
public function filterInput()
public function draw()
protected function _calculateTotal()
private function _countMessages()
 
Wouter J

Wouter J

10/02/2013 20:32:08
Quote Anchor link
Ja, maar dan kun je ze niet meer aanroepen op de manier zoals jij nu liet zien.
 
Ruben Portier

Ruben Portier

10/02/2013 20:37:49
Quote Anchor link
Ok bedankt. De manier die jij me aangeeft is niet echt hoe ik het wil. Ik zou het ook static kunnen doen, maar dat is af te raden? Ook vind ik static niet zo lekker werken.

Daarnaast vraag ik me af hoe ik dus eigenlijk het volgende kan doen:

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
<?php
class main {
  $db = object;

  function
dbConnect() {
    $this->db = new mysqli($host, $user, $pass, $dbname);
  }
}


class user extends main {
  function
logIn() {
    $this->db->query('SELECT * FROM users');
  }
}

?>


Dus eigenlijk heb ik een database class. In de main class wordt de databaseconnectie aangemaakt. Wat ik dan wil is dat de child user ook aan die database kan d.m.v. $this->db. Dit lukt me telkens niet. En ik wil niet $this->db doorsturen naar de user's constructor, dat ziet er echt niet 'proper' uit.

Singleton is ook niet goed? Kan je mij uitleggen waarom precies? Overal lees je verschillende verhalen.
Gewijzigd op 10/02/2013 20:39:02 door Ruben Portier
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/02/2013 22:08:55
Quote Anchor link
Hoi Ruben.

Een user class extenden van een database class (jij noemt hem main) is niet logisch.
Een class administrator extenden van een user is wel logisch. een administrator is namelijk ook een user maar dan één met wat extra privileges.

Je zou het dus beter iets anders kunnen doen. (hoe daar zullen de meningen vast weer over uiteenlopen)
Maar toch een mogelijk idee.

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
35
36
37
38
39
40
41
42
43
44
45
46
<?php

class Database {
  private $db;

    function
__constructor() {
        $this->dbConnect();
    }


    public function dbConnect() {
        $this->db = new mysqli($host, $user, $pass, $dbname);
    }
}



class User {
    private $db;
    
    private $username;
    // en zo nog meer
    
    function __constructor($db, $userid) {
        $this->db = $db;
        // run query to retrieve user information with $userid
    }

    function
logIn() {
        $this->db->query('SELECT * FROM users');
        // en zo nog meer
    }
}


class Main {
    private $db;
    
    function
__constructor() {
        $this->db = new $db();
        
        $user = new User($this->db, 1);
        
        $user->logIn();
    }
}

new
Main();
?>
 
Ruben Portier

Ruben Portier

10/02/2013 22:35:07
Quote Anchor link
Bedankt, ik zal even uitleggen waarom ik het op die manier wil. Ik ben namelijk een eigen framework aan het maken gebaseerd op de model-view-controller methode. Ik heb een system class die als basis van mijn framework dient. Dan heb ik andere classes die daaronder vallen: controller, model, database...

De controller class extend op de system class, zelfde voor model, database enz. De controller class dient bv. om controllers mee te laden, de model class om models te laden, de database dient dan weer om een database connectie te maken.

Mijn vraag is nu, hoe kan een controller die geladen wordt door de controller class (de controller die geladen wordt extend op de controller class, die dan weer extend op de system class) de database class gaan gebruiken (die extend op de system class).

Ik heb al naar dergelijke frameworks gekeken en sommigen gebruiken Singleton. Ik weet niet of dit zo'n goed idee is. Het zou toch ook anders moeten kunnen?

Bedankt alvast!
 
Wouter J

Wouter J

10/02/2013 22:40:58
Quote Anchor link
Ruben, naar mijn mening (maar dit is het eerste topic dat ik van je lees) denk jij nu nog veel te makkelijk over OO. Al die extends zijn namelijk compleet verkeerd. Ik raad je aan eerst eens goed naar OO principes te kijken, en dan niet alleen naar OO syntax tutorials, en dan kun je over een half jaar misschien nog eens nadenken over het zelf maken van een framework.
 
Ruben Portier

Ruben Portier

10/02/2013 22:54:08
Quote Anchor link
Ik zal je zeker geen ongelijk geven. Maar het is net om beter te worden in OO dat ik een framework wil maken. Niet meteen een framework die ik ook echt wil gaan gebruiken. Ik heb er namelijk in 4 weken tijd al 5 verwijderd. Telkens begin ik opnieuw omdat ik het op een andere manier wil gaan bouwen.

Wat ik wel zou kunnen doen is telkens waar ik de database nodig heb het volgende commando uit te voeren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->load->database();
?>


Maar hoe kan ik dan maken dat je de database kan aanroepen via $this->db? Dus ik laad hem met een load-functie die in de parent class staat. Die maakt dan een nieuw database-object aan op $this->db. Maar kan de child dan ook aan die database komen? Of zal die ook leeg zijn?
 
Wouter J

Wouter J

10/02/2013 23:16:41
Quote Anchor link
Quote:
Telkens begin ik opnieuw omdat ik het op een andere manier wil gaan bouwen.

En precies om deze rede raad ik je dus aan om eerst eens goede OO denk tutorials te lezen. Je begint telkens opnieuw, omdat iets mooiers in gedachte had. Wat je bij OO juist doet is dat je de eerste 2 maanden je computer niet aanzet en je alleen je project gaat uitschrijven, totdat je echt alles hebt zoals jij het wilt.

En als je OO wilt leren zou ik zeker niet met een framework beginnen. Werelds grootste OO en PHP experts doen er alsnog met 100 man een jaar over om een framework te onderhouden en enkele kleine nieuwe dingen eraan toe te voegen. Frameworks zijn de meest ingewikkelde systemen die je in PHP ooit gaat maken. Frameworks kun je alleen beginnen als je OO principes en design pattern volledig hebt begrepen en jaren ervaring er mee hebt.
Er zijn hier al meerdere forumleden aan frameworks begonnen en het is leuk dat ze het doen, maar daar blijft het ook wel bij. Ze hebben deze projecten al meerdere malen opnieuw opgestart en of ze ooit hun framework afkrijgen stel ik ter discussie.
Gewijzigd op 10/02/2013 23:18:57 door Wouter J
 
Reshad F

Reshad F

10/02/2013 23:20:24
Quote Anchor link
Wouter J op 10/02/2013 17:38:09:
In PHP wordt de constructor overriden. Je krijgt nu dus alleen de constructor van B en niet meer die van A. Gebruik parent::__construct() om de parent constructor aan te roepen.


Niet alleen in PHP hoor wouter :)

@TS

Volgens mij wil jij het volgende

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
35
36
37
38
39
40
<?php
class A {

    private $name;

    public function __construct($name) {
        $this->name = $name;
    }


    public function getName() {
        return $this->name;
    }

}
?


en dan de child klasse aanmaken

[code]<?php

class B extends A {

    public function __construct($name) {
        parent::__construct($name);
    }

}

?>


Wat je dan doet om via class B de methode aan te roepen die je in de parent class hebt staan is

<?php

$b
= new B('Batman');

echo 'Ik heet ' . $b->getName();

?>


Als je in class B een nieuwe constructor zou maken ( zonder parent::__construct();) zou deze de constructor van A overriden
 



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.