Variable uit parent class halen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Productontwikkelaar Food

Wat ga je doen Als Productontwikkelaar Food ga je nieuwe producten ontwikkelen en bestaande producten verbeteren. Je bent hierbij betrokken bij het gehele proces: van productconcept naar proefreceptuur, het realiseren va het product (op kleine schaal) en het testen van producten in een productieomgeving. Verder: Bewaak je de status van verschillende fases van productontwikkeling en lever je tijdig de benodigde data aan Ben je bezig met de optimalisatie van oude en nieuwe recepturen Begeleid of organiseer je proefsessies (sensorisch onderzoek) in het team en/of bij klanten Onderhoud je contacten met de klanten, leveranciers van grondstoffen e.a. externe partijen Houd je

Bekijk vacature »

Junior Front end developer Onderwijssoftware

Functie Als Junior front end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van

Bekijk vacature »

Junior .NET developer

Functie Om half 9 kom jij binnen en pak jij als eerst natuurlijk een bakje koffie of thee. Vervolgens ga jij je voorbereiden op de stand-up van kwart voor 9. Zijn er bijvoorbeeld dingen waar jij nog tegen aan loopt? Of is er nog code die getest of gereviewd moet worden? Vervolgens starten jullie met de stand up en na de stand up zoeken jullie elkaar op en gaan jullie aan de slag. Als team met 6 developers werken jullie in drie wekelijkse sprints. Het einde van een sprint is altijd op een donderdag zodat jullie op vrijdag de demo

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een uitdagende werkgever in regio Breda zijn wij op zoek naar een Full Stack C#.NET programmeur. Je bent verantwoordelijk voor het ontwikkelen van apps, webapplicaties en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines te scannen en vervolgens de data om te zetten in management informatie voor de klanten. Taken en verantwoordelijkheden: Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks, HTML, TypeScript, SQL & C++, CSS. Geen ervaring met één van deze technologieën is dan ook geen enkel probleem! Deze werkgever biedt

Bekijk vacature »

Java Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Oracle APEX Ontwikkelaar (3.500-6.000 euro)

Bedrijfsomschrijving Ben jij een getalenteerde Oracle APEX ontwikkelaar met minimaal één jaar ervaring in het ontwikkelen van Oracle APEX-applicaties? Ben je gepassioneerd over het ontwikkelen van bedrijfskritische oplossingen en wil je werken bij een toonaangevend consultancybedrijf? Dan zijn wij op zoek naar jou! Deze organisatie beschikt over zowel inhouse als externe projecten, maar bovenal over een sterk team en netwerk van opdrachten waardoor jij jezelf verder kunt ontwikkelen. Het team bestaat uit een aantal junior en medior developers, maar vooral uit senioren. De business unit managers binnen het team zijn mensen die hun vak verstaan en zelf als Oracle APEX

Bekijk vacature »

Low-Code Expert/Developer: Power Platform Speciali

Bedrijfsomschrijving Als Low-Code Expert/Developer bij ons innovatieve bedrijf, neem je een cruciale rol op je in de creatie, ondersteuning en implementatie van diverse oplossingen met behulp van het veelzijdige Power Platform. Dit platform omvat Power Apps, Power BI, Power Automate, Power Virtual Agent en Azure Logic Apps. Het Power Platform biedt je de mogelijkheid om klanten te voorzien van naadloze integraties door op maat gemaakte oplossingen te creëren die compatibel zijn met (bijna) alle bestaande software-infrastructuren. Dankzij het uitgebreide scala aan toepassingen, krijg je de kans om als architect en projectleider van je eigen oplossing te fungeren. Dompel jezelf onder

Bekijk vacature »

C#.NET ontwikkelaar

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Je bouwt webshops, webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Framework en C#. Je zorgt voor de optimalisering van bestaande software en de automatisering van

Bekijk vacature »

Front end developer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers met passie voor hun vak. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van ontwerp en ontwikkeling zullen samenkomen in een proof of concept. Nadat is vastgesteld dat de oplossing voldoet aan de belangrijkste behoeftes worden producten of services gevalideerd door middel van korte iteraties. Hiermee zorgen ze ervoor dat het werk voldoet aan de technische vereisten en gebruikersbehoefte. Door het inzetten van de nieuwste technologieën die toekomstbestendig zijn weten ze klanten omver te blazen. Ook geven en organiseren ze veel

Bekijk vacature »

Back-end developer (Magento2)

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Senior .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. 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. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Full Stack Developer

Ben jij een kei van een full-stack developer? Heb je ambitie om te groeien en jezelf te ontwikkelen binnen een ambitieus bedrijf? Gaat jouw hart sneller kloppen van transpilers of frameworks zoals Angular, Vue of React? Dan ben jij de persoon die wij zoeken! Voor onze opdrachtgever zijn wij op zoek naar een full-stack developer om onderdeel te zijn van een team dat bestaat uit gedreven developers. Ieders met hun eigen specialiteiten en kennis van de projecten en behoeften vanuit de product owners. We zoeken iemand die met zijn/haar huidige competenties en domeinen dit team wil begeleiden, stimuleren en tevens

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 »

.NET Developer

Functie omschrijving Net afgestudeerd en op zoek naar een leuke baan als developer? Zoek niet verder! Ik heb een functie beschikbaar als back-end developer, bij een leuk familiebedrijf. Je gaat werken met de Microsoft stack en de technieken C# en .NET. Verder maak je gebruik van MVC en Entity framework. SQL kent ook geen geheimen voor jou. Jouw verantwoordelijkheden: Nieuwe maatwerk software bouwen; API koppelingen bouwen; Applicaties en software optimaliseren; Back-end programmeren. Een erg uitdagende functie, met veel vrijheid. Je kan meerdere dagen thuis werken en als je op kantoor werkt wordt de lunch verzorgd. Heb je interesse, reageer dan

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Voor een opdrachtgever, met een prachtig kantoor in omgeving Wateringen zijn wij op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind jij het leuk om in een Agile/Scrum omgeving te werken? Wil jij

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

16/04/2024 16:34:52
 
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.