get

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SQL Database ontwikkelaar

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Medior/senior Front-end developer (Vue.js)

Functie Als Front-end developer ben je uiteindelijk overkoepelend aan de slag voor de 3 ontwikkelteams die ieder aan een specifiek product werken. In samenwerking met de UX-designer en de huidige Front-end developer zorg je voor gebruiksvriendelijke software. Lijkt het jou interessant om complexe problemen op te lossen en feautures naar een hoger niveau te tillen? En vind je het niet erg om oudere delen van de applicaties te refactoren i.c.m. het toevoegen van nieuwe functionaliteiten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en zelfredzaamheid)

Bekijk vacature »

Software Developer

Functie omschrijving Psst hé jij daar! Op zoek naar een nieuwe uitdaging als developer? Wacht niet langer en reageer direct. In deze functie ga je bij een familiebedrijf werken als developer. Je gaat maatwerk software ontwikkelen met de Microsoft stack. Je gebruikt technieken als C#, ASP.NET en MVC. Je werkt in een leuk team van andere developers. Je krijgt veel vrijheid in je werk en kan flexibel werken. Dagje thuiswerken? Geen probleem! Daarnaast is er veel ruimte om écht mee te denken met het bedrijf en met de klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Vanaf

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

Java Developer / Sociaal domein

Dit ga je doen Nieuwbouw en doorontwikkeling; Beheer en wanneer nodig onderhoud; Bijdrage leveren in het functioneel- en technisch ontwerptraject; Analyseren van productie verstoringen; Meedenken over vernieuwingen en verbeteringen. Hier ga je werken De organisatie waar jij komt te werken focust zich op software development met een maatschappelijk tintje. De afdeling software ontwikkeling bestaat uit vijf verschillende scrum teams, met allen hun eigen focus gebied. Zo zijn er een aantal teams die zich focussen op specifieke applicaties, maar is er ook een team gericht op projecten. Binnen de organisatie staat innovatie en kwaliteit voorop. Een aantal applicaties draait nog op

Bekijk vacature »

Senior Java developer

Als Senior Developer bij Sogeti ben je onderdeel van onze toonaangevende best-gecertificeerde Java community. Deze bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Aval en de Nationale Politie. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Barendrecht! 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! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

Medior PHP developer

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

Back-end Developer (Permanent position with the em

Bedrijfsomschrijving Dutch specialist in technical installation materials. Functieomschrijving Purpose of the position: Our client is looking for a Back-end Developer who, together with the rest of the energetic and dynamic team, is responsible for the development and management of the website. This not only concerns the development and management of the current website, but also the development of a new Headless Commerce Platform to keep the customer's website Future proof. Within the IT department, there is a real DevOps culture and the commerce team is at the forefront and tries to implement continuous improvements. Most important tasks: ï‚· Designing and

Bekijk vacature »

Front end ontwikkelaar

Functie Het huidige team bestaat uit momenteel uit 5 back end developers verdeeld van senior tot junior. Omdat de gehele front end van applicaties anders gaan insteken zijn ze op zoek naar een ervaren Front end developer die hen kan helpen de juiste keuzes te maken. Je krijgt veel vrijheid om te bepalen hoe je dit wilt ontwikkelen en vrijheid in welke techniek je hiervoor wilt gebruiken. Je zult je dus bezighouden met architectuur, documentatie en natuurlijk ontwikkeling van nieuwe functionaliteiten binnen de verschillende applicaties. natuurlijk heb jij ook mogelijkheden om te sparren binnen het team, maar ze gaan uit

Bekijk vacature »
Ozzie PHP

Ozzie PHP

27/08/2012 17:03:12
Quote Anchor link
Zomaar eens een vraagje.

Soms heb je een class met allerlei get functies:

getId()
getUsername()
getFirstName()
getLastName()
getAge()
getPhoneNumber()
getMailAddress()
getCity()
getCountry()

... en ga zo maar door.

We gebruiken al die get functies omdat we onze properties private willen houden, en we willen voorkomen dat iemand van buitenaf de properties kan wijzigen. Maar nu zat ik me dus af te vragen... Waarom niet 1 get functie en dan als volgt gebruiken...

get('id')
get('username')
get('firstname')
get('lastname')
get('age')

enzovoorts...

Dan heb je nog maar 1 get functie nodig! Voor- / nadelen?
 
PHP hulp

PHP hulp

18/04/2024 04:02:50
 
John Berg

John Berg

27/08/2012 17:14:50
Quote Anchor link
We hebben hier ook lang geworsteld met de Getters/Setters. Uiteindelijk maken al die functies je domein er ook niet leesbaarder op.

De C# oplossing (die in php 5.5 of 6 waarschijnlijk gaat komen) is natuurlijk de ultieme oplossing.

Wat voor ons het kortste in de buurt komt is het volgende:
Domain properties waar verder niets mee gebeurt maken we public.
Waar wel iets mee moet gebeuren lossen we op via de magic __get/__set in een basisklasse:
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
<?php
class BaseClass
{
  public function __get( $name )
  {

    if( method_exists( $this, 'Get' . $name ))
      return $this->{'Get' . $name}();
    else
      trigger_error ( "Getter for $name does not exists" );
  }

  
  public function __set( $name, $value )
  {

    if( method_exists( $this, 'Set' . $name ))
      $this->{'Set' . $name}( $value );
    else
      trigger_error ( "Setter for $name does not exists" );
  }
}

?>


In alle gevallen kun je dus $model->Waarde gebruiken, terwijl er toch een getter/setter aangeroepen wordt. Zo kun je b.v. ook heel gemakkelijk lazy loading implementeren. Of readonly properties.

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
14
15
16
17
18
<?php
class Blog extends BaseClass
{
  private $_categories;

  public $BlogId;
  public $Content;
  public $Created;
  
  public function GetCategories()
  {

    if( !$this->_categories )
      $this->_categories = new Categories();
    
    return $this->_categories;
  }
}

?>



my 2 cents ...
Gewijzigd op 27/08/2012 17:17:55 door John Berg
 
Erwin H

Erwin H

27/08/2012 17:36:35
Quote Anchor link
Ozzie PHP op 27/08/2012 17:03:12:
Dan heb je nog maar 1 get functie nodig! Voor- / nadelen?

Het grote nadeel: je hebt geen apart voorgedefinieerde methodes meer. Daarmee verlies je de hulp van code completion en (op langere termijn) als het niet goed gedocumenteerd is het overzicht van welke properties allemaal wel en niet ophaalbaar zijn.

Voordeel: het scheelt enorm veel code en je bent veel flexibeler.

Het voorbeeld van John vind ik er een beetje tussenin. Of het veel voordelen heeft vraag ik me een beetje af, want je moet nog steeds alle getters/setters schrijven.

Mijn antwoord op wat je moet doen: geen :-)
De ene keer maak ik wel getters/setters, de andere keer via een magic methode of een algemene functie zoals je die zelf ook voorstelt. Mijns inziens is er niet een algemeen 'beste' methode.
 
Wouter J

Wouter J

27/08/2012 17:44:53
Quote Anchor link
Het nadeel wat je dan heb, met 1 get method werken, is dat je dus 1 functie hebt die dan alle verantwoordelijkheid opzich neemt voor het teruggeven van properties. Dit vind ik net iets teveel voor 1 method. Daarom zul je dan weer het moeten splitten in verschillende methods en je komt dan ong. op jou eerste uit, alleen heb je het dan zoiets:

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
<?php
class User {
    // ...

    public function get($property)
    {

        return $this->get{ucfirst($property)}(); // weet niet of dit helemaal mogelijk is...
    }

    private function getName()
    {

        return ucwords($this->name);
    }


    private function getCountry()
    {

        return $this->country;
    }


    // ...
}

$user = new User();
$user->set('name', 'Wouter'); // sets name
echo 'Hallo '.$user->get('name'); // gets name
?>


Of je doet iets als jQuery doet, dat lijkt het meest op de C# oplossing die in PHP gaat komen:
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
<?php
class User
{
    // ...

    public function name()
    {

        if (1 == func_num_args()) {
            // handles setter
            $arguments = func_get_args();
            $this->name = $arguments[0];
            /* of vanaf PHP5.4
            $this->name = func_get_args()[0]; */

        } else {
            // handles getter
            return $this->name;
        }
    }


    // ...
}

$user = new User();
$user->name('Wouter'); // sets name
echo 'Hallo '.$user->name(); // gets name
?>


En mocht je niet weten wat die C# oplossing is:
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 User
{
    public $name {
        get { return $this->name; }
        set { $this->name = ucfirst($value); }
    };
}


$user = new User();
$user->name = 'Wouter'; // sets name
echo 'Hallo '.$user->name; // gets name
?>
Gewijzigd op 27/08/2012 17:46:19 door Wouter J
 
Kris Peeters

Kris Peeters

27/08/2012 17:48:36
Quote Anchor link
Het lijkt me ook dat je gewoon beide kan doen (EDIT: Een voorbeeld zie je bij Wouter, die me voor was).
Houd de gewone getters en setters.
Dan is er niemand die je tegenhoudt om een extra functie 'get' te hebben die het getten en setten groepeert.

Nu, vraag jezelf dit toch eens af:

voor wie doe je het? Voor de persoon die de class schrijft of voor de persoon die de class gebruikt?
Gewijzigd op 27/08/2012 17:51:58 door Kris Peeters
 
John Berg

John Berg

27/08/2012 17:49:19
Quote Anchor link
@Erwin: het is nu net niet de bedoeling om alle getters/setters te schrijven. Alleen die waar je iets bijzonders mee wil (lazy loading, readonly, iets doen als er iets geset wordt). Dus mijn domains zijn toch heel redelijk 'clean'.

n.b. als het property bestaat worden de magic __get/__set niet aangeroepen.
Gewijzigd op 27/08/2012 17:53:18 door John Berg
 
Erwin H

Erwin H

27/08/2012 18:07:19
Quote Anchor link
@John, waarschijnlijk begrijp ik je dan verkeerd (of je code).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
 public function __get( $name )
  {

    if( method_exists( $this, 'Get' . $name ))
      return $this->{'Get' . $name}();
    else
      trigger_error ( "Getter for $name does not exists" );
  }

?>

Hieruit maak ik op dat alleen de properties die daadwerkelijk een getter hebben (gecontroleerd via de method_exists call) een return waarde kunnen krijgen. Alle andere leveren een error op. Dus, zo concludeer ik, alleen als er toch nog een aparte getter is geschreven voor de property kan je ophalen.

Maar graag uitleg als ik dit dus verkeerd zie.
 
Ozzie PHP

Ozzie PHP

27/08/2012 18:08:05
Quote Anchor link
Kris Peeters op 27/08/2012 17:48:36:
Nu, vraag jezelf dit toch eens af:

voor wie doe je het? Voor de persoon die de class schrijft of voor de persoon die de class gebruikt?

In eerste instantie voor mezelf. Op een gegeven moment krijg je zoveel getters dat ik me afvraag of het niet handiger kan... of beter gezegd, handiger MOET!

Het is inderdaad wel lastig dat je dan geen aparte functie meer hebt die automatisch door je editor wordt aangevuld. Dat is inderdaad een goede, maar het bespaart wel heel veel code. De opmerking over het niet kunnen bewerken van data had ik inderdaad even niet bij stil gestaan. Wellicht zou je dit dan al moeten regelen bij het setten?
 
Erwin H

Erwin H

27/08/2012 18:08:07
Quote Anchor link
@John nogmaals, Of begrijp ik uit je allerlaatste opmerking dat je public properties maakt?
Auw, dat doet echt pijn aan mijn ogen....
Gewijzigd op 27/08/2012 18:08:30 door Erwin H
 
John Berg

John Berg

27/08/2012 19:12:10
Quote Anchor link
@Erwin: Het is een mix. Er zijn public properties voor die dingen waar je niets bijzonders mee wil.

Als je dus schrijft $myclass->Foo en Foo is public dan wordt de __get niet aangeroepen. Zo is PHP ontworpen
Als je schrijft $myclass->Bar en Bar is geen property van $myclass dan wordt de __get aangeroepen die dan probeert $myclass->GetBar() te callen.

We vinden dat het onderstaande stukje code geen enkele meerwaarde heeft:

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 $_prop;

  public function GetProp()
  {

     return $this->_prop;
  }


  public function SetProp( $value )
  {

     $this-_prop = $value;
  }
}

?>


Dus, waarom zou je deze hele berg code niet vervangen door dit, wat functioneel precies hetzelfde doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
class Test
{
  public $prop;
}

?>
Gewijzigd op 27/08/2012 19:13:14 door John Berg
 
Erwin H

Erwin H

27/08/2012 19:39:12
Quote Anchor link
John Berg op 27/08/2012 19:12:10:
Als je dus schrijft $myclass->Foo en Foo is public dan wordt de __get niet aangeroepen. Zo is PHP ontworpen

Ik begrijp je nu, in eerste instantie begreep ik niet dat je bedoelde dat je public properties had. Deels misschien ook wel omdat ik daar enigszins allergisch voor ben :-)

Op zich heb je natuurlijk wel gelijk dat het simpel doorgeven van een waarde via een getter en setter weinig meer waarde heeft en dat je er een public property van zou kunnen maken. Alleen vind ik het persoonlijk niet netjes om het zo te doen. Een property is dat, het 'property' (eigendom) van een object en het object bepaalt wat ermee gebeurt. Bij mij zijn properties dus nooit public.
 
John Berg

John Berg

27/08/2012 19:47:04
Quote Anchor link
@erwin: een wat groter voorbeeld om het te verduidelijken:
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
<?php
class Test extends BaseClass
{
  private $_foo;
  public  $bar;
  
  protected function GetFoo()
  {

    return $_foo;
  }

  
  protected function SetFoo( $value )
  {

    $this->_foo = $value;
  }
}


// het gebruik
$test = new Test;
$test->bar = 'proef';
echo $test->bar;  // zal 'proef' laten zien

$test->foo = 'ook een proef';
echo $test->foo;  // zal 'ook een proef' laten zien
        
$test->GetFoo(); // geeft foutmelding

?>


Dus, net als in C# kun je op de "normale" wijze met properties werken. Waar niets bijzonders gebeurt, en dat is bij de meeste zo, maak je publics. Waar je iets bijzonders wil doen gebruik je de Get/Set, die echter voor de buitenwereld verborgen blijft.

Uiteraard is dit maar een tijdelijke oplossing, de echte oplossing komt met PHP 5.5 of PHP 6 (zie het voorbeeld wat Wouter gaf van C#)

We willen buiten de class zo compatible mogelijk blijven met de nieuwe aanroep vandaar.
Gewijzigd op 27/08/2012 19:52:16 door John Berg
 
Wouter J

Wouter J

27/08/2012 19:47:57
Quote Anchor link
Omdat je dan de flexibiliteit hebt om het later wel anders te doen zonder eerst de hele code aan te passen. Of wat denk je van een subklasse die wat bijzonders willen doen?
 
John Berg

John Berg

27/08/2012 19:57:31
Quote Anchor link
@wouter: idd, we implementeren zo "Lazy loading".

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
14
15
<?php
class Test extends BaseClass
{
  private $_foo;
  public  $bar;
  
  protected function GetFoo()
  {

    if( !$this->_foo )
      $this->_foo = new Foo();

    return $_foo;
  }
}

?>


Hier is Foo readonly, en de subclass wordt alleen aangemaakt als Foo voor de eerste keer aangeroepen wordt.

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
  $test
= new Test; // maakt alleen Test, maar geen Foo;

  $bar = $test->Foo; // zal object Foo aanmaken en teruggeven

  $foobar = $test->Foo; // zal object Foo teruggeven

  $test->Foo = 1; // foutmelding
?>
Gewijzigd op 27/08/2012 20:05:32 door John Berg
 



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.