class properties

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robot Programmeur

Een verantwoordelijke baan met leuke uitdagingen. Heb jij ervaring met het programmeren van robots? Kan jij goed samenwerken met collega's die verschillende specialisaties hebben? Ben je oplossingsgericht, analytisch en flexibel? Ga dan aan de slag als Robot Programmeur bij Gibas in Nijkerk! Als Robot Programmeur kom je te werken bij Gibas. Dat betekent dat je gegarandeerd meewerkt aan unieke oplossingen in productieprocessen. Bij elk project moet er opnieuw geëngineerd en geprogrammeerd worden. Dat maakt jouw werk uitdagend! Voordat je robots gaat programmeren komt er het volgende bij kijken: De opdracht gaat van de afdeling Sales naar de afdeling Operations door

Bekijk vacature »

Gezocht: Ervaren VB6 developer met C# ambitie!

Bedrijfsomschrijving Dit bedrijf is een vooraanstaande softwareleverancier die gespecialiseerd is in het ontwikkelen van software pakketten voor autoschade herstel bedrijven. De software wordt gebruikt door meer dan de helft van alle autoschade herstel bedrijven in Nederland. Het team van professionals is op zoek naar getalenteerde collega developers die hun vaardigheden willen inzetten om het bedrijf te laten groeien. Functieomschrijving Voor dit bedrijf zoek ik een ervaren VB6 / VB.NET developer met interesse om op termijn verder te gaan in C#. In deze functie ben je verantwoordelijk voor het onderhouden van de bestaande softwarepakketten. Een deel van de code is nog

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je werkt mee aan de migratie naar .NET 6; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Zij zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

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 Ben jij een senior .NET developer en heb jij tevens ervaring als teamlead? Ben jij iemand met een helikopterview en denk jij graag mee met de klanten? Dan zijn wij op zoek naar jou! Voor een geweldig bedrijf zijn wij namelijk op zoek naar een ervaren .NET developer. Het bedrijf houdt zich bezig met het ontwerpen en bouwen van websites, portalen en applicaties voor met name zorg- en onderwijsinstellingen en overheidsinstanties. Jouw taken: Het fungeren als Lead Developer; Het meedenken met de business (dit vergt commercieel inzicht); Het begeleiden van diverse projecten (van klein tot groot); Het ontwerpen

Bekijk vacature »

Fullstack Software Developer

Functieomschrijving Voor een ambitieuze werkgever in regio Roosendaal zijn wij op zoek naar een Full Stack C#.NET Developer. Als software programmeur ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Verder ontwikkelen en onderhouden van webapplicaties, dashboards en apps voor de eigen IOT-oplossingen; Testen en goedkeuren van de software; Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks,

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

Bekijk vacature »

Traineeship IT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

3D BIM Add-on Developer

Als 3D BIM add- on ontwikkelaar bij KUBUS ontwikkel je add-ons (BCF Managers genaamd) voor de toonaangevende building information modeling (BIM) programma's Revit, Navisworks, Archicad, AutoCAD en Tekla Structures. BCF Managers maken gegevensoverdracht mogelijk tussen BIM-software en BIMcollab. Je werkt zowel aan de front- als aan de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en

Bekijk vacature »

Senior/Lead Python developer

Functie Samen met je team, bestaande uit een senior, 2 mediors en één junior ontwikkelaar ga je op een Agile-gebaseerde aanpak werken aan hun software. Je hebt oog voor kwaliteit, risico’s en klantbelang. Communicatie met je collega’s en waar nodig ook met klanten speelt een belangrijke rol in het bereiken van een succesvol resultaat. Als persoon ben je slim, krijg je dingen voor elkaar en ga je resultaatgericht te werk. Binnen het development team is er veel zelfstandigheid, los van de stand-up (10:00 uur) en zo nu en dan pair-programming sessies. Technieken die zij gebruiken zijn o.a. Python, Django, MySQL,

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 »

Low Code Developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten in heel het land! Wat ga je hier zoal doen? Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan

Bekijk vacature »

Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Software Developer je verantwoordelijk voor: - Je werkt voortdurend aan oplossingen voor het op afstand bewaken en besturen van oogstmachines; - Het visualiseren van gegevens in rapporten, apps of andere formaten; - Voorspellend machineonderhoud; - Taakplanning; - Je schrijft aangepaste plug-ins om gegevens te importeren of exporteren

Bekijk vacature »

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »
Ozzie PHP

Ozzie PHP

13/02/2012 18:22:39
Quote Anchor link
Even een vraagje. Als je in een class properties hebt, (wanneer) moet je dan aangeven wat het type is?

Voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Test
{

  private $test;

  public function __construct() {
    $test = array('blabla');
    $this->test = $test;    
  }

}

?>


Moet ik nou aangeven dat $test een array is? Dus zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Test
{

  private $test = array();

  public function __construct() {
    $test = array('blabla');
    $this->test = $test;    
  }

}

?>


Of hoef je dit alleen maar aan te geven als een andere functie de $test property zou uitlezen en het risico bestaat dat deze nog niet geset is? Bijvoorbeeld zoiets als dit:

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
<?php
class Test
{

  private $static = array();

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


  public function set() {
    if ($een_bepaalde_situatie) {
      $this->test = 'hiep hoi';    
    }
  }

}

?>
Gewijzigd op 13/02/2012 18:34:46 door Ozzie PHP
 
PHP hulp

PHP hulp

27/11/2024 20:53:37
 
Jaron T

Jaron T

13/02/2012 18:26:19
Quote Anchor link
Aangeven wat voor type het is is een beetje onzin in PHP, uiteindelijk kan je toch een String in een property zetten die je van te voren initialiseert als array. Je kan natuurlijk wel type hinting gebruiken: http://php.net/manual/en/language.oop5.typehinting.php in combinatie met type casting: http://php.net/manual/en/language.types.type-juggling.php

edit; als je alleen het initialiseren bedoelt: statics dienen van te voren geinit worden en normale vars binnen de __constructor()
Gewijzigd op 13/02/2012 18:27:51 door Jaron T
 
Ozzie PHP

Ozzie PHP

13/02/2012 18:34:29
Quote Anchor link
Jaron, ik zie voornamelijk deze 3 varianten. Dus, de ene keer staat er = array() achter, soms staat er niks achter en soms staat er = '' achter. Mijn vraag is dus of je wel of niet moet aangeven wat voor type het is? Of doe je dat bijv. alleen als het "risico" bestaat dat een functie de property teruggeeft terwijl deze property nog geen waarde heeft? En dat je 'm daarom alvast vult met een lege waarde?

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 Test
{

  private $test = array();
  private $test;
  private $test = ''



  public function __construct() {
    
  }

}

?>





Toevoeging op 13/02/2012 18:35:46:

Hoe bedoel je dit?

edit; als je alleen het initialiseren bedoelt: statics dienen van te voren geinit worden en normale vars binnen de __constructor()

Je moet toch altijd initten? Om aan te geve of ie public of private is?
 
Erwin H

Erwin H

13/02/2012 18:45:11
Quote Anchor link
$test = array();
Dit heb je nodig als je later elementen toe wilt voegen en niet wilt hoeven checken of het al een array is.
$test[] = "blabla"
zal een foutmelding opleveren als je er niet eerst een array van hebt gemaakt.

$test = '';
is eigenlijk gewoon een initialisatie. Heb je niet nodig als je later altijd nog controleert of $test wel een (goede) waarde heeft, maar is handig als je er zeker van wilt zijn dat er altijd tenminste een lege string in zit.
 
Jaron T

Jaron T

13/02/2012 19:00:19
Quote Anchor link
Nee, je haalt declareren en initialiseren door elkaar. Zoals ik zei, static waardens dienen boven de constructor ge-init te worden en de rest er binnen.
Gewijzigd op 13/02/2012 19:01:35 door Jaron T
 
Wouter J

Wouter J

13/02/2012 19:04:39
Quote Anchor link
Bij array is het handig om $myArr = array() te gebruiken. Bij getallen waarmee je wilt optellen/aftreken/delen/wat dan ook is het ook verstandig om $myInt = 0 te gebruiken, voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$getal
= 0;

for( $i=-1; ++$i < 15; )
{

  $getal += 1;
}

?>


In strict OO horen properties in de constructor gedefinieerd te worden, alleen PHP is nergens script in en dus ook niet hier in. En dus kun je gewoon de waarde toevoegen terwijl je de property toevoegt aan de class:
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
<?php
class StrictOO
{
  protected $someVars;
  public function __construct()
  {

    $someVars = Array();
  }

  public function addVar( $value )
  {

    $someVars[] = $value;
  }
}

class PHPOO
{
  protected $someVars = Array();
  public function addVar( $value )
  {

    $someVars[] = $value;
  }
}

?>


Het is altijd verstandig om de properties te initten, maar het moet niet. Maar als je het niet doet krijgt het standaard public:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class SomeTestClass
{
  function
setName( $name )
  {

    $this->name = (string) $name;
  }
}

$someTest = new SomeTestClass;
$someTest->setName('Ozzie PHP');
echo $someTest->name; // Ozzie PHP
?>


En dan als laatst, en dan hou ik echt mijn mond, kun je ook nog static properties meegeven aan een object. In dat geval kun je ze niet definiëren in de constructor, dus doe je het meteen. Een voorbeeld van static properties vind je hier.
Gewijzigd op 13/02/2012 19:09:15 door Wouter J
 
Erwin H

Erwin H

13/02/2012 19:11:11
Quote Anchor link
Jaron T op 13/02/2012 19:00:19:
Nee, je haalt declareren en initialiseren door elkaar. Zoals ik zei, static waardens dienen boven de constructor ge-init te worden en de rest er binnen.

Dan is bij mij altijd de vraag waarom. En niet om lullig te doen of om mijn gelijk te halen.
Als het een berekende waarde is dan is is het vanuit de taal al zo, maar voor constante waardes is het in elk geval geen beperking vanuit php zelf.
 
Ozzie PHP

Ozzie PHP

13/02/2012 19:39:51
Quote Anchor link
Bedankt voor alle opmerkingen. Nog even wat vragen / onduidelijkheden.

@Wouter:
"In strict OO horen properties in de constructor gedefinieerd te worden"
Wat bedoel je hier mee? Heb je een voorbeeldje? Of bedoel je gewoon dat je in je __construct zegt $this->test = 'test'.


"En dan als laatst, en dan hou ik echt mijn mond, kun je ook nog static properties meegeven aan een object."

bedoel jij constanten? die zie ik namelijk in het voorbeeld van jou staan.
Echter, bij statische properties dan denk ik aan:

static private test;
 
Jaron T

Jaron T

13/02/2012 19:55:15
Quote Anchor link
Erwin H op 13/02/2012 19:11:11:
Jaron T op 13/02/2012 19:00:19:
Nee, je haalt declareren en initialiseren door elkaar. Zoals ik zei, static waardens dienen boven de constructor ge-init te worden en de rest er binnen.

Dan is bij mij altijd de vraag waarom. En niet om lullig te doen of om mijn gelijk te halen.
Als het een berekende waarde is dan is is het vanuit de taal al zo, maar voor constante waardes is het in elk geval geen beperking vanuit php zelf.



Het is eerder van, static waardes kunnen aangeroepen worden zonder dat er een object bestaat van de des betreffende class ( Test::getField(); ). Dus daarom dienen deze "perse" een waarden te krijgen buiten de constructor (waarom zou je hem anders static maken?)
 
Erwin H

Erwin H

13/02/2012 20:01:10
Quote Anchor link
Jaron T op 13/02/2012 19:55:15:
Het is eerder van, static waardes kunnen aangeroepen worden zonder dat er een object bestaat van de des betreffende class ( Test::getField(); ). Dus daarom dienen deze "perse" een waarden te krijgen buiten de constructor (waarom zou je hem anders static maken?)

Dat was precies het deel waar ik het (vanwege precies die reden) helemaal mee eens ben. Het ging me dus meer om de niet static waardes.
 
Ozzie PHP

Ozzie PHP

13/02/2012 20:03:50
Quote Anchor link
Oké, maar de niet statische waarden moet je die nou wel of niet initten?
 
Wouter J

Wouter J

13/02/2012 21:10:20
Quote Anchor link
Ozzie

>> Wat bedoel je hier mee? Heb je een voorbeeldje? Of bedoel je gewoon dat je in je __construct zegt $this->test = 'test'.
Ja, dit bedoel ik. Een constructor is in de echte OO talen bedoelt om alle object properties te definiëren.

>> bedoel jij constanten? die zie ik namelijk in het voorbeeld van jou staan.
Echter, bij statische properties dan denk ik aan:

Oeps, ja je hebt helemaal gelijk!

>> maar de niet statische waarden moet je die nou wel of niet initten?
Het is een keuze die je maakt. Ik probeer toch wel behoort strak de OO talen te volgen, ook al ben ik in PHP en dus doe ik het vaak wel. Maar door gemak schiet het er ook wel eens in. Zoals in het voorbeeld dat ik hierboven gaf. Om nou helemaal een constructor te maken om StrictOO::someVars een array te laten zijn... Dan zou ik gewoon de class PHPOO gebruiken.
Maar als je toch al een constructor functie hebt, wat vaak zo is, dan zou ik het gewoon in de constructor stoppen.
 
Ozzie PHP

Ozzie PHP

13/02/2012 23:10:54
Quote Anchor link
Bedoel je nou eigenlijk dat je in strict OO niet dit moet 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
<?php
class Test
{

  private $test = array();

  public function __construct() {
    $test = array('blabla');
    $this->test = $test;    
  }

}

?>


Maar dit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Test
{

  private $test;

  public function __construct() {
    $test = array('blabla');
    $this->test = $test;    
  }

}

?>


Ik ben het nu ff kwijt.

Toevoeging op 13/02/2012 23:35:05:

Hoe kan ik dit nou het beste doen:

- statische variabelen moet je dus altijd initten
- moet ik niet statische variabelen ook initten? of moet je die alleen declaren in de construct... of allebei? Ik wil graag de meest nette manier weten zodat ik dat overal kan doorvoeren. Kan iemand misschien een code voorbeeld geven van een class met daarin de volgende properties: een array, een lege string en een statische property. Kan iemand via een simpel code voorbeeldje even laten zien hoe je dit dan zou moeten initten / declaren???
Gewijzigd op 13/02/2012 23:35:48 door Ozzie PHP
 
Kris Peeters

Kris Peeters

14/02/2012 00:22:49
Quote Anchor link
Wat mij betreft ...

variabelen declareren (bv. private $test;) buiten elke functie. Lijst die mooi op boven de constructor, met wat commentaar, waar nodig.

variabelen initiëren in de constructor.

Statisch betekent dat je het object zelf niet ter beschikking hebt.
Ik associeer static eigenlijk enkel met functies.
Neem nu bv. een class waar je wiskundige berekeningen groepeert.
Nulpunten van een parabool berekenen, op basis van a, b en c (y = ax² + bx + c), om maar iets te noemen

static properties ... het doet me wat denken aan whisky zonder alcohol; het gaat wat aan de essentie voorbij.
Als je properties nodig hebt, ben je in mijn ogen niet meer static bezig.

Php laat echter veel meer toe dan mijn buikgevoel goed acht, en ik ben niet echt de grote autoriteit, wat dit betreft.
Gewijzigd op 14/02/2012 00:26:47 door Kris Peeters
 
Ozzie PHP

Ozzie PHP

14/02/2012 06:32:20
Quote Anchor link
Thanks, dus buiten elke functie declareren en in de constructor initiëren.

Mag je ook buiten de constructor initiëren?

Dus stel je hebt bijvoorbeeld een set() functie waarmee je wat dingen instelt en ook een paar properties set? Is dat toegestaan?

Toevoeging op 14/02/2012 06:48:02:

En stel nu je haalt in een bepaalde functie (niet de construct functie) informatie op die je wilt storen in een property. Is dat dan niet goed? Dus stel je hebt een user class en op een gegeven moment roep je een bepaalde functie aan, bijv. setBirthday() waarmee de verjaardag van de u ser in een property wordt gestopt. Is dat dan eigenlijk niet goed?

@Kris, als jij de variabelen declareert buiten de functie, geef je dan aan welk type het is?
 
Kris Peeters

Kris Peeters

14/02/2012 13:21:51
Quote Anchor link
Ozzie PHP op 14/02/2012 06:32:20:
Mag je ook buiten de constructor initiëren?

Dus stel je hebt bijvoorbeeld een set() functie waarmee je wat dingen instelt ...



Ja.
Initiëren betekent maar dat je ze een beginwaarde geeft; een default; voor het geval die waarde niet geset wordt.
Niet iedere waarde hoeft per se een initiële waarde te hebben.
Het is dan de bedoeling dat je met setters echte waarden invult, zoals je ze nodig hebt op dat moment; bv. je setBirthday().
Je kan ook een aparte functie maken waarin je een hoop waarden initieert. Vaak noemt men die init()
Het is mogelijk dat een functie ook meerdere properties invult ... maar zo'n functie is strikt gezien geen pure setter.


Ozzie PHP op 14/02/2012 06:32:20:
@Kris, als jij de variabelen declareert buiten de functie, geef je dan aan welk type het is?


Ik niet. In php betekent dat trouwens heel weinig. Het geeft je geen enkele garantie dat dat type behouden blijft.
Omzetten naar het juiste type doe je wel in de setter.
bv. Als je weet dat een property een integer moet zijn, laat je in de setter niet toe dat een string wordt ingevoerd.
Het kan ook geen kwaad om, bij de getter, nog eens te parsen naar het juiste type.

bv. bij integers:
return (int) $this->getal;
}

Ik kan nog een voorbeeld geven van een uitgebreide class: (trouwens, heel handige class, om foto's te uploaden/resizen/...)
http://www.verot.net/download/class.upload.php/class.upload.txt
Hierin zie je mooi hoe alles goed gedocumenteerd is; je ziet hoe de constructor (het is wel een constructor in php4 stijl: function upload ) een reeks properties initieert; er is ook een init() functie

En vooral altijd in gedachten houden: hoe meer je regelt binnen de class, hoe minder je er buiten moet regelen, en hoe interessanter de class is om te hergebruiken.
 
Ozzie PHP

Ozzie PHP

14/02/2012 13:48:02
Quote Anchor link
Thanks voor je uitleg!

Sakkerjuuu... wat een lange class :-)))))
Ik probeer m'n class nooit te groot te maken en nooit te veel commentaar erbij te zetten... maar als ik dit dan zie :D

Wel vreemd dat in de constructor een hoop variabelen op NULL gezet worden. Is dat daadwerkelijk nodig? Lijkt me overkill toch?

Toch nog ff een vraagje. Stel dat je een property hebt, bijv. private $bla.
Die property wordt uitsluitend geset door de functie bla(). Echter, de functie bla() wordt niet in alle gevallen gebruikt. Moet je die property dan wel per se initiëren in de construct? Of is dat niet nodig en is het onderstaande een goede manier?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Bla
{

private $bla;

public function set() {
  $this->bla = 'blabla';
}

}

?>
Gewijzigd op 14/02/2012 13:49:05 door Ozzie PHP
 
Kris Peeters

Kris Peeters

14/02/2012 14:33:12
Quote Anchor link
Initiëren op null is een beetje overkill, inderdaad. Dat is default.
Het setten op NULL, of "", of 0, of array() geeft je wel al een indicatie van het type.
Kwaad kan dat niet.

Denk er verder vooral aan ... stel dat iemand mijn class gebruikt (desnoods jezelf. Stel je even een beetje schizofreen op :) ) en een getter oproept vooraleer hij de waarde heeft geset.
Gebeurt er dan wat jij en hij verwacht?

Een voorbeeld: stel dat een getter een array moet teruggeven, die wordt dan rechtstreeks in een foreach gezet.
bv.
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 Test {
    private $getallen;
    public function __construct() {
      // $this->getallen = array();
    }
    public function getGetallen() {
      return $this->getallen;
    }
  }

  
$test = new Test();
foreach ($test->getGetallen() as $key=>$value) {
  // ...
}
?>


Dit zal een warning geven, indien je dat commentaar in de constructor niet weghaalt.
(In C++/c# krijg je zelfs een fatal error als je iets get wat niet geset of geïnitieerd is)
 
Ozzie PHP

Ozzie PHP

14/02/2012 14:35:51
Quote Anchor link
Oké, thanks voor de info! :)
 



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.