class properties

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end programmeur

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een uitdagende werkgever in omgeving Waalwijk zijn wij op zoek naar een enthousiaste softwareontwikkelaar met kennis of ervaring met C# en SQL. In een uitdagende rol als C#.NET Developer werk je samen met een enthousiast en informeel team aan het bouwen van maatwerk software voor variërende klanten. Verder ziet jouw takenpakket er als volgt uit: Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je houdt je bezig met het ontwikkelen

Bekijk vacature »

Lead javascript developer Node.js React

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Consultant Low Code Developer

Functie omschrijving Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Voor een mooie opdrachtgever in omgeving Delft zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten. Onderdelen functie 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 Mendix of Betty Blocks. Je bent verantwoordelijk voor

Bekijk vacature »

Back end developer Python, PHP

Functie Jij als full stack ontwikkelaar zult komen te werken samen met 1 PHP ontwikkelaar een PO en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult voornamelijk (lees 75%) werken aan de roostersoftware. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere flexwerkers ingezet kan worden. Verder willen ze financiële koppelingen gaan maken

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Front-end Developer - React - Data Driven

Bedrijfsomschrijving Onze klant is een snelgroeiende organisatie die een data-driven inspectieapp op de markt hebben gebracht die nu al een aantal jaar door verschillende organisaties wereldwijd gebruikt wordt. Er zijn zo'n 6 mensen werkzaam bij dit bedrijf en ze zijn nu vooral op zoek naar een sterke front-end developer die wil gaan werken aan nieuwbouw applicaties en de uitbouw van de huidige applicaties. De reden dat ze zoeken is omdat er veel werk op komst is en ze hier de juiste capaciteit voor willen hebben. Er heerst hier een hele prettige sfeer waarin respect en eerlijke communicatie belangrijk is. Ook

Bekijk vacature »

Junior/medior PHP developer Onderwijssector

Functie Momenteel zijn ze op zoek naar een developer die, veelal fullstack, mee gaat werken aan de ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn ze op zoek naar een Technische front end developer. Momenteel hun front end back end team gescheiden aan het werk. Hier willen ze verandering in krijgen. Omdat ook veel interne applicaties ontwikkeld worden zoeken ze iemand die hen kan helpen om de interne applicaties te voorzien van de juiste Vue.js componenten. Zodoende willen ze de interactie tussen front end en back end versoepelen en de volgende stap binnen het platform gaan zetten. Deze componenten die jij ontwikkeld zullen in elk project gebruikt worden. Het back end team bestaat momenteel uit 8 ontwikkelaars

Bekijk vacature »

Scrum Master

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Scrum master op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je begeleidt twee teams binnen de afdeling Platform Services (PLS). Je helpt mee de devops manier van werken van de teams verder door te ontwikkelen. Je helpt de PO bij het managen van de product backlog; het voorbereiden van

Bekijk vacature »

.NET Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een .NET Developer! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans en kijk snel of jouw vaardigheden aansluiten bij onderstaand profiel! Je kunt een uitdagende rol gaan vervullen als .NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving Bergen. Dit bedrijf is zeer vooruitstrevend en verricht betekenisvol werk. Binnen dit bedrijf wordt gewerkt aan de productie en ontwikkeling van medische middelen. Als .NET Developer ga jij je bezig houden met het volgende: Je wordt betrokken bij alle fasen van software

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving Startende Software Ontwikkelaar gezocht met kennis van C# .NET! Ben jij net klaar met je opleiding en ben je op zoek naar je eerste echte werkervaring? Of heb jij al enige werkervaring maar ben toe aan iets nieuws? Dan is dit de perfecte kans voor jou! Wij zoeken namelijk een Junior Software Ontwikkelaar die klaar is voor een nieuwe uitdaging bij een leuke werkgeven in de regio Zeist. In deze functie werk jij vaak aan verschillende projecten en ga je bij klanten op bezoek. Ben jij op zoek naar een functie met uitdaging, diversiteit en verantwoordelijkheid? Dan is

Bekijk vacature »

C# .NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »

Front end developer Zorgplatform

Functie Jij als Front end ontwikkelen zult komen te werken samen met 1 PHP ontwikkelaar, 1 Python developer en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De Marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult als Front ender dus voornamelijk bezig zijn met het verbeteren van onze interfaces op onze verschillende producten. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere

Bekijk vacature »

Technisch Applicatie ontwikkelaar

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! In deze functie werk jij voornamelijk aan: Het onderhouden en ontwikkelen van de IT systemen; Het opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werk je aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkel en implementeren je MS PowerApps en Power BI. Bedrijfsprofiel Je komt terecht bij een familiair

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

29/12/2024 03:56:03
 
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.