getInstance setInstance?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

Bekijk vacature »

Python (Django) developer - Remote in The Netherla

Functie Together with your team, consisting of a senior, 2 mediors and one junior developer, you will work on their software in an Agile-based approach. You have an eye for quality, risk, and customer interest. Communication with your colleagues and, where necessary, with customers, plays an important role in achieving a successful result. As a person, you are smart, get things done, and are result-oriented. There is a lot of independence within the development team, apart from the stand-up (10:00 am) and occasional pair-programming sessions. Techniques they use include Python, Django, MySQL, Mercurial, Ubuntu Linux, Nginx. In terms of front-end

Bekijk vacature »

Software Developer Java

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 »

Low Code Developer voor o.a. overheidsprojecten!

Bedrijfsomschrijving Wil jij ook behoren tot de specialist in Low Code? Dan zou ik zeker aanraden om verder te lezen. Deze organisatie is ooit opgericht door twee studenten en is inmiddels uitgegroeid tot een serieuze werkgever met een groot aanzien op Low Code projecten. De sfeer is echter niet veranderd, er heerst een informele sfeer met een open deuren beleid, en hierin mag de eigen bar natuurlijk niet ontbreken. Momenteel maakt deze organisatie een flinke groei door en hier kan jij natuurlijk niet bij ontbreken. Daarom ben ik op zoek naar Low Code Developers met een degelijke technische achtergrond. Kennis

Bekijk vacature »

Full Stack C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars 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: Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Testen en valideren van de ontwikkelde software. Actief deelnemen aan code reviews en bijdragen aan het verbeteren van de kwaliteit van de software. Je gaat aan

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

C# Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Wil jij graag aan de slag als C# ontwikkelaar en jouw skills verder ontwikkelen? Zoek niet verder! Als C# ontwikkelaar ga je aan de slag met de volgende taken: (verdere) ontwikkeling van de software voor de interne processen binnen een .net omgeving; optimaliseren van de dataprocessing; ontwerpen en implementeren van zowel desktop- als web-programmatuur; ontwikkeling van tools ten behoeve van consultants en klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Den Bosch. Zij ontwikkelen business intelligence software voor een specifieke branche. Dit houdt in dat zij dashboards ontwikkelen

Bekijk vacature »

Ervaren C#.NET developer

Functieomschrijving We zijn op zoek naar een ervaren C#.NET programmeur voor een moderne werkgever in de regio Prinsenbeek. Als programmeur zal je bezig zijn met het ontwikkelen van op maat gemaakte webapplicaties voor verschillende klanten, waarbij je ervoor zorgt dat complexe processen zo goed mogelijk worden ondersteund. Je takenpakket omvat onder andere: Werken met databases en dataopslagoplossingen, implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens, evenals het schrijven van technische documentatie en gebruikershandleidingen. Het ontwikkelen en onderhouden van C#.NET-applicaties. Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen. Het schrijven van hoogwaardige en herbruikbare codes.

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

SQL ontwikkelaar

Functieomschrijving Voor een gave werkgever in regio Breda zijn wij per direct op zoek naar een SQL ontwikkelaar/ functioneel consultant. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Je test de ontwikkelde oplossingen om er zeker van te zijn dat deze voldoen aan de functionele specificaties en de behoeften van de organisatie; Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Je stelt op

Bekijk vacature »

C++ Developer

Functieomschrijving Ben jij als software engineer toe aan een nieuwe uitdaging? Dan zijn wij op zoek naar jou! Voor het maken van de procesbesturingsoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Ontwerpen, programmeren en testen van productaanpassingen; Implementeren van nieuwe productreleases in de projectteams; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden,

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 »

Developer Full Stack

Functie omschrijving Full Stack Developer gezocht! Wij zijn op zoek naar een Full Stack Developer voor een bedrijf in de regio Nijkerk. Je maakt in deze functie onderdeel uit van een groeiend team met een goede ambitie waarbij eenheid, betrokken en overtreffen de belangrijkste kernwaardes zijn. Het bedrijf werkt volgens de AGILE/SCRUM methode, wat je o.a. terug vindt in de tweewekelijkse sprints, retrospectives en een daily standup. Je takenpakket bestaat uit: Bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een Saas applicatie; Bijdragen aan de innovatie van het bedrijf en hun klanten; Het ontwikkelen op de laatste technologie van

Bekijk vacature »

Fullstack JavaScript Developer Webapplicaties

Bedrijfsomschrijving Voor deze organisatie ben ik op zoek naar een getalenteerde Fullstack JavaScript Developer. Ze is een snelgroeiend software development agency dat zich richt op het ontwikkelen van moderne webapplicaties en complexe systemen voor haar klanten. Ze is gevestigd onder de rook van Utrecht en heeft als doel om tot de top van de Nederlandse agencies te behoren. Deze organisatie maakt softwareoplossingen voor verschillende soorten bedrijven. Innovatie staat hoog in het vaandel en je zult dus met nieuwe technieken aan de slag gaan. Ze hebben klanten in vele branches zitten, zoals retail, finance, gezondheid en onderwijs. De diverse klanten zorgen

Bekijk vacature »
Ozzie PHP

Ozzie PHP

21/02/2012 09:59:42
Quote Anchor link
Een vraagje... het getInstance principe werkt ongeveer als volgt. De code kijkt of er een instance bestaat, zo ja... geef de bestaande instance terug. Zo nee, maak een instance aan en geef die terug.

Nu vraag ik me af... iedere keer dat je getInstance gebruikt, ga je controleren of er al een instance is. Is het dan niet slimmer om die instance in het begin van je applicatie eenmalig te setten (via setInstance), en dat vervolgens getInstance altijd de instance teruggeeft, zonder controle? Is dat gebruikelijk?

In mijn registry wil ik gebruik maken van een instance, maar dit betekent dat ie altijd als ik iets uit de Registry haal de controle uitvoert. Dus nu vraag ik me af of het een goed idee is om de instance van te voren al te setten.

Graag jullie reacties!
 
PHP hulp

PHP hulp

26/12/2024 17:30:22
 
Remco nvt

Remco nvt

21/02/2012 12:10:55
Quote Anchor link
Je doet juist een singleton gebruiken omdat je niet weet waar je wanneer het object gaat gebruiken.

Als je het eerst zou gaan setten dan weet je de flow en dan is een singleton al iets minder nuttig. Op het feit na dat je altijd maar 1 instantie kan hebben mocht je niet netjes programmeren. Als je hem al hebt geset en in je registry meteen stopt dan is de singleton nutteloos i.m.o.

Het is juist handig om overal in je code ClassName::getInstance(); te roepen en dan het object te hebben of te maken indien het de eerste keer aanroepen is.
 
Ozzie PHP

Ozzie PHP

21/02/2012 12:34:12
Quote Anchor link
Dankjewel voor je reactie Remco. Ik snap wat je bedoelt.

Is het dan handiger om in de Registry helemaal niet met een instance te werken, maar uitsluitend met statiche functies en statische properties? Dus een statische set en get funtie en een statische property om alles in op te slaan?
 
Wouter J

Wouter J

21/02/2012 12:39:52
Quote Anchor link
Ja, ik heb een registery geleerd als zo'n soort class:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

Registery::set('database.user', 'root');
Registery::set('database.host', 'localhost');
// enz.

$pdo = new PDO('mysql:host='.Registery::get('database.host').';dbname='.Registery::get('database.table'),
                Registery::get('database.user'),
                Registery::get('database.pass')
               );

?>
 
Ozzie PHP

Ozzie PHP

21/02/2012 13:15:55
Quote Anchor link
Oké, thanks Wouter. Ik ga proberen om het als volgt te maken (voortbordurend op jouw voorbeeldje):

$configuration = Registry::get['configuration'];

en dan bijv. de database username:

$configuration->database->username;

Maar de Registry zelf zal ik dan in ieder geval helemaal statisch gaan maken.
 
Remco nvt

Remco nvt

21/02/2012 13:47:44
Quote Anchor link
In een registry zet je dingen die je overall in je code wilt kunnen oproepen.
Dus wat je er in stopt doet er eigenlijk niet toe. Zijn het ints dan enkel dat. Komt er een instantie van een klasse in voor dan zit dat er in.

Zelf zou ik het makkelijk houden met 2 static functies:

Registry::get('identifier');
Registry::set('identifier', $var);

Je zou het dan bijvoorbeeld in een array kunnen stoppen op key, value basis.
Dit gezien je in PHP toch alles in een array mag stoppen.

Zodoende hoef je jezelf geen zorgen te maken hoe dingen worden opgeslagen en geen rare vertaalslagen te maken.

De Registry hoeft namelijk in mijn ogen niet te weten wat erin kan worden gestopt. Het moet enkel een plek zijn die dingen opslaat om opgehaald te worden.
Gewijzigd op 21/02/2012 14:05:33 door Remco nvt
 
Wouter J

Wouter J

21/02/2012 13:56:28
Quote Anchor link
@Remco, jou 2e voorbeeld kan niet in PHP (en ook niet in andere talen). Bedoel je zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

Registery::set('identifier', $var);

?>
 
Ozzie PHP

Ozzie PHP

21/02/2012 13:57:01
Quote Anchor link
Ah oké, thanks.

Als je trouwens een array property gebruikt om de waardes in op te slaan, en alle functies zijn statisch, dan kun je die property niet via de construct functie initiëren. Doe je dat dan maar direct? Dus zo?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
class Registry

static private $registry = array();

?>
 
Remco nvt

Remco nvt

21/02/2012 14:04:37
Quote Anchor link
Je hebt helemaal gelijk Wouter J :) Geen idee waarom ik het in het voorbeeld zo heb getyped.

Zal het even aanpassen

Die zou ik inderdaad al zo opgeven Ozzie
Gewijzigd op 21/02/2012 14:07:11 door Remco nvt
 
Ozzie PHP

Ozzie PHP

21/02/2012 14:10:35
Quote Anchor link
oke, thanks!
 
Wouter J

Wouter J

21/02/2012 14:16:02
Quote Anchor link
@ozzie, ja. Zoek anders eens op php Registery pattern om te zien hoe het over het algemeen eruit ziet.
 
Ozzie PHP

Ozzie PHP

21/02/2012 14:27:20
Quote Anchor link
Thanks Wouter. Vreemd genoeg zijn de voorbeelden die ik tot nu toe zie vrijwel allemaal niet-statische varianten :-s

Ik heb mijn Registry class heel simpel:

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

static private $registry = array();

static public function set($key, $value) {
  self::$registry[$key] = $value;
}


static public function get($key) {
  if (isset(self::$registry[$key])) {
    return self::$registry[$key];
  }
else {
    // property bestaat niet, foutmelding tonen!
  }
}

}

?>


Oké zo?
 
Wouter J

Wouter J

21/02/2012 14:41:48
Quote Anchor link
Dat is inderdaad hoe ik het ook zou doen, al zou ik alle properties en methods van een class 1 tab naar rechts opschuiven.

Ik heb even gezocht en ik bedoelde meer deze presentatie: OO desig patterns for PHP waarin op slide 12 een mooi voorbeeld staat van de Registery, die bijna hetzelfde is als die van jou.
 
Ozzie PHP

Ozzie PHP

21/02/2012 15:09:31
Quote Anchor link
Wouter J op 21/02/2012 14:41:48:
Dat is inderdaad hoe ik het ook zou doen, al zou ik alle properties en methods van een class 1 tab naar rechts opschuiven.

Dat doe ik normaal ook, maar dat gaat niet zo fijn in zo'n textarea :)

Overigens zie ik dat in dat voorbeeld (slide 12) ze de set functie dusdanig hebben gemaakt dat je bestaande waardes niet kunt overschrijven. Ik denk dat ik dat ook maar ga inbouwen om te voorkomen dat ik per ongeluk iets overschrijf. Nadeel is wel dat als ik bewust iets wil overschrijven dat dit niet gaat, maar ik denk dat dat in de praktijk niet vaak voorkomt.
 
Wouter J

Wouter J

21/02/2012 17:05:35
Quote Anchor link
Je zou ervoor kunnen kiezen om een 3e parameter voor extra validatie als je hem express wilt overschrijven:
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
<?php

class Registery
{
  private static $values;

  public static function set( $key, $value, $overwrite = false )
  {

    if( isset(self::$values[$key]) && !$overwrite )
      throw new LogicException(sprintf('The key (%s) already exists', $key));
    self::$values[$key] = $value;
  }


  public static function get( $key )
  {

    if( isset(self::$values[$key]) )
      throw new InvalidArgumentException(sprintf('The key (%s) does not exists', $key));
    return self::$values[$key];
  }
}


try
{
  Registery::set('db.user', 'root');
  Registery::set('db.user', 'ozziePHP'); // throw exception
}
catch( LogicException $e )
{

  echo $e->getMessage();
}


try
{
  Registery::set('db.user', 'root');
  Registery::set('db.user', 'ozziePHP', true); // success
}
catch( LogicException $e )
{

  echo $e->getMessage();
}

?>
Gewijzigd op 21/02/2012 17:06:02 door Wouter J
 
Ozzie PHP

Ozzie PHP

21/02/2012 18:11:03
Quote Anchor link
Thanks Wouter! Ik heb een extra delete functie gemaakt. Dus, wil je een waarde overschrijven, dan moet je eerst de bestaande waarde verwijderen.
 



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.