getInstance setInstance?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Full-stack developer

Als Full-stack developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Samen met je SCRUM team werk je aan zowel de front- als 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 echt het verschil te kunnen maken. Ons ontwikkelteam bestaat uit ruim 40 ontwikkelaars, testers, scrum

Bekijk vacature »

Laravel PHP developer in een jong team

Bedrijfsomschrijving Als je op zoek bent naar een werkplek waar plezier en uitdaging hand in hand gaan, dan is dit bedrijf de juiste keuze voor jou. Hier kun je werken aan uitdagende projecten en krijg je als developer veel verantwoordelijkheid. Het bedrijf waardeert kwaliteit boven kwantiteit en richt zich op het ontwikkelen van hoogwaardige applicaties en websites waar klanten enthousiast over zijn. Dit bedrijf is vooruitstrevend en streeft naar het leveren van de best mogelijke resultaten voor hun klanten. Als medior PHP ontwikkelaar met 3 jaar ervaring ben jij de persoon die we zoeken. Je krijgt hier de kans om

Bekijk vacature »

C#.NET ontwikkelaar

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

Bekijk vacature »

Junior .NET Software Developer

Dit ga je doen Software development met behulp van C# .NET en / of PHP, je mag zelf kiezen waar jij je in wil specialiseren Meedenken over het nieuwe pakket, waar moet het aan voldoen? Unit-, integratie- en diverse andere tests schrijven en uitvoeren Nauw samenwerken met je IT collega's zoals Testers, Developers, DevOps Specialisten en Architecten Jezelf ontwikkelen met behulp van trainingen en cursussen Hier ga je werken Onze klant, een grote speler in de medische sector, is op zoek naar een enthousiaste junior (of meer ervaren) Software Developer die klaar is voor een nieuwe stap in zijn of

Bekijk vacature »

Outsystems Developer Junior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als junior Outsystems Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Ontwikkelen van herbruikbare componenten; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als junior .NET Developer kom je terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als junior .NET Developer werk je aan het ontwikkelen van verbeterde

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

.NET developer

Functie Voor jou als junior .NET ontwikkelaar staat er een flinke uitdaging klaar bij dit bedrijf waar jij veel van kan gaan leren. Zo willen zij een flinke uitbreiding doen op het webbased gedeelte dat zij nu hebben en willen zij het standaard deel gaan moderniseren. Jouw team is dan ook op zoek naar een junior .NET ontwikkelaar die het leuk vindt om op basis van research en development aan de slag te gaan. Jouw mening telt mee als het gaat om hoe en met wat deze applicaties gebouwd en herschreven gaan worden. Jouw functie bij dit bedrijf gaat dan

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 »

WordPress & Azure Developer

Dit ga je doen Zowel front- als back-end development aan de online website omgeving; Het up-to-date houden van alle WordPress-sites; Koppelingen maken tussen applicaties; Meedenken en adviseren over verbeteringen; Development door middel van WordPress, Javascript, HTML en CSS; Werken binnen Scrum/Agile team. Hier ga je werken Voor een grote overheidsinstelling in Den Haag zijn wij opzoek naar een WordPress developer, met kennis en ervaring op het gebied van Azure. De organisatie zit in een grote transitie waarbij de gehele website/online omgeving vernieuwd zal gaan worden. Binnen dit Scrum/Agile team ben je verantwoordelijk voor deze grote migratie/ombouw van de omgeving. De

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 »

Ervaren PHP Developer

Functie omschrijving Jelling IT zoekt ervaren PHP developer! Voor een organisatie in de regio Rhenen zijn wij op zoek naar een ervaren PHP developer die gaat functioneren als een verlengstuk van de klant. Jij bent iemand die technisch complexe zaken met enthousiasme aanvliegt. Je bent in staat om aan meerdere projecten te werken en werkt graag met de nieuwste technieken. In deze functie werk je veel samen met front-end developers en stel je alles in het werk om grote verschillen voor de klanten teweeg te brengen. Verder ben jij iemand die graag zichzelf uitdaagt en die altijd de beste wilt

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 »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

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

23/11/2024 09:25:21
 
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.