getInstance setInstance?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior .NET developer

Functie Als junior .NET developer start jij in een development team met twee ervaren software ontwikkelaars. Jouw persoonlijke ontwikkeling is voor ons erg belangrijk en jij gaat dan ook meelopen met onze Senior .NET ontwikkelaar die jou met zijn kennis en ervaring een goede begeleiding kan aanbieden. Als team zijn jullie verantwoordelijk voor het schrijven van software voor onze toonaangevende Automatiseringssystemen. Jij gaat aan de slag met de onderhoud van de kernsoftware, ondersteund de software van derden door het gebruik van onze webservices en als team zijn jullie verantwoordelijk voor het ontwikkelen van onze backend oplossingen. Wij maken op dit

Bekijk vacature »

Back-end Developer

Functieomschrijving Voor een erkende werkgever in de regio van Middelburg zijn wij op zoek naar een enthousiaste PHP / Symfony Developer. Een ambitieus persoon die het gemotiveerde development team komt versterken met het realiseren van nieuwe en complexe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor professionele groei? Dit ga je doen: Je bent verantwoordelijk voor de beheer en ontwikkeling van de serviceportal in Symfony en de webshops in de tweede versie van Magento; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

Back End Developer

Als Back End developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Je hebt een focus op de back end van onze software, daarvoor werken wij hoofdzakelijk met C# en .NET. Wij hanteren een full-stack benadering, wat betekent dat je naast de back-end ook meehelpt bij andere onderdelen van de code. 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

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 »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

Bekijk vacature »

Outsystems Developer Medior

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 ervaren 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 de

Bekijk vacature »

Productontwikkelaar Food

Wat ga je doen Als Productontwikkelaar Food ga je nieuwe producten ontwikkelen en bestaande producten verbeteren. Je bent hierbij betrokken bij het gehele proces: van productconcept naar proefreceptuur, het realiseren va het product (op kleine schaal) en het testen van producten in een productieomgeving. Verder: Bewaak je de status van verschillende fases van productontwikkeling en lever je tijdig de benodigde data aan Ben je bezig met de optimalisatie van oude en nieuwe recepturen Begeleid of organiseer je proefsessies (sensorisch onderzoek) in het team en/of bij klanten Onderhoud je contacten met de klanten, leveranciers van grondstoffen e.a. externe partijen Houd je

Bekijk vacature »

Senior Lead Front End Developer

Functieomschrijving Voor Stichting Waternet zijn wij op zoek naar een senior Lead Front End Developer. Binnen het DevOps team Online zijn we op zoek naar een Senior Lead Front End developer met kennis van toegankelijkheid. Deze developer zal zich bezighouden met development van webpaginas die in verbinding staan met systemen uit het back office. Taken Ontwerpen, ontwikkelen, implementeren, documenteren en beheren van webapplicaties in een Azure-omgeving Debuggen, analyseren en oplossen van problemen in de OTAPomgevingen Je participeert in het DevOpsTeam Online voor het verder uitwerken en implementeren van gebruikerswensen Je bent betrokken bij toegankelijkheid audits en het implementeren van WCAG

Bekijk vacature »

C# .NET Developer

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken In een klein team van professionals ben je als C# .NET Developer verantwoordelijk voor het ontwikkelen van één van de applicaties voor het grootste inhouse product: een applicatie voor alles omtrent hypotheken. De programmeertaal die je

Bekijk vacature »

Frontend Developer - Leeuwarden

Frontend Developer – Leeuwarden Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Full Stack .NET Developer C# ASP.NET

Samengevat: Deze werkgever is gespecialiseerd in het op afstand bewaken en besturen van machines en processen. Ben jij een ervaren Full Stack .NET Developer? Heb je ervaring met C# en ASP.NET? Vaste baan: .Net Developer C# ASP.NET HBO €3.300 - €4.500 Deze werkgever is een snel groeiende onderneming gespecialiseerd in het op afstand bewaken en besturen van machines en processen, IoT (Internet of Things). Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wil jij bij de top specialisten horen? Ben jij op zoek naar een

Bekijk vacature »

Programmeur / Developer

Voor een familiebedrijf in Doetinchem, actief in de machinebouw voor de food-sector, zijn wij op zoek naar een programmeur / developer. In deze functie ben je werkzaam in een team van 5 medewerkers. Je werkzaamheden bestaan onder andere uit het verhelderen van requirements vanuit de opdrachtgever, de klant en de afdeling ontwikkeling. Je verricht haalbaarheidsstudies en werkt specificaties uit die je afstemt met de opdrachtgever. Je ontwerpt design in software en stemt af met je collega's. De huidige vision-systemen zijn geschreven in C software, welke draait op een CUDA platform. Je schrijft en codeert software en zal gaan testdraaien. Tot

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

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

25/04/2024 15:59:57
 
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.