Singleton class vraagje..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mendix Consultant / Developer

Dit ga je doen Het in kaart brengen en analyseren van de functionele wensen van de klant rondom Mendix applicaties; Het fungeren als sparringpartner voor de (interne) klanten; Het opstellen van requirements en het vertalen hiervan naar technische mogelijkheden; Het opstellen van user stories; Het bouwen van de Mendix applicaties in samenwerking met jouw team of zelfstandig; Het testen van op te leveren software en het zorg dragen voor de implementatie; Trainen van gebruikers in het gebruik van de applicatie; Werken in een Agile omgeving. Hier ga je werken De organisatie begeeft zich in de retail branche en focust zich

Bekijk vacature »

Java Developer

Dit ga je doen Het ontwikkelen van nieuwe software; Het ombouwen van de bestaande software; Zowel back- als front-end software ontwikkelen; Het testen; Het implementeren van de volledig geteste software; Het verzorgen van nazorg en het oplossen van bugs; Het opstellen en bijhouden van procesdocumentatie; Je draagt bij aan het agile/scrum processen van het team. Hier ga je werken Ongetwijfeld heb je een of meerdere producten van deze organisatie in huis. Het proces erachter, daar ben je ongetwijfeld minder bekend mee. Deze opdracht geeft je de kans meer over dit proces te weten te komen en een mooie bijdrage te

Bekijk vacature »

Als Front-end developer samenwerken met de beste c

Functie Momenteel zijn we voor één van de projecten bij hun key partner, een voorloper in de energiesector, op zoek naar gedreven Front-end developers. Ze nemen de lead in dit project en werken uitsluitend met vooruitstrevende technologieën. Ze verwachten dat de technologie die hier wordt ontwikkeld uiteindelijk door veel meer grote corporates, in verschillende sectoren zal worden toegepast. Dit is dan ook een heel uitdagend project om aan mee te gaan werken. Het team bestaat o.a. uit User Experience designers, Data Scientists en Software Engineers. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van

Bekijk vacature »

Senior Applicatie ontwikkelaar Java

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving We verwachten van je,

Bekijk vacature »

Front end developer

Functie Qua type opdrachten is er echt een verscheidenheid aan afnemers, zo werken ze met grote multinationals, maar ook met startups. Zo kom je te werken in een gevarieerde omgeving en kan je ook schakelen tussen verschillende culturen. De projecten variëren van greenfield projecten tot langdurige ontwikkeltrajecten. Hier wordt alleen maar gewerkt met aan front end projecten. Daarom maakt het onze partner niet uit waar jij kennis van hebt, als je maar gedegen kennis hebt van Javascript frameworks, Unit testing en ook bekend bent met de scrum methodiek. Eisen Minimaal 4 jaar relevante werkervaring Kennen en ervaring van Javascript frameworks

Bekijk vacature »

Fullstack developer (NodeJS, React, AWS)

Functie Als Fullstack developer kom je te werken in het ontwikkelteam, maar zoals gezegd komt er veel meer bij kijken dan alleen maar ontwikkelen. Je bent samen met je collega’s continu bezig om de software uit te breiden maar hiernaast doe je doorlopend onderzoek naar de inzet van bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Maar waar staan ze nu? Na een onderzoeksfase van ruim een jaar zijn

Bekijk vacature »

Medior/Senior Python developer (Django)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en werken ze met pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Er is een kwaliteitsfocus en dan biedt ruimte om verbeteringen echt door te voeren binnen de gehele

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen 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 »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

C# .NET Backend Developer HBO Javascript

Samengevat: Deze werkgever is een professionele speler op gebied van IT en E-Commerce. Wil jij werken voor een e-commerce platform? Heb je ervaring met C#, Javascript en Scrum? Vaste baan: C# .NET Developer Backend E-Commerce 3.400 - 4.500 Backend Developer Wij ontwikkelen software voor E-Commerce toepassingen. Ons eigen Content Management systeem biedt een integrale oplossing met diverse ERP software. Onze systemen zijn vaak complex en omvangrijk en draaien bij grote organisaties. Maar ook kleine ondernemingen hebben steeds vaker behoefte aan een vlekkeloos werkende E-Commerce oplossing. Zij bieden een uitdagende werkomgeving met gezellige collega's. Je krijgt veel vrijheid en er is

Bekijk vacature »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

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 »

No-Code Betty Blocks ontwikkelaar

Bedrijfsomschrijving Wil jij de bedrijfsprocessen van klanten revolutionair digitaliseren en optimaliseren zonder beperkt te worden door programmeertalen? Kom werken bij een snelgroeiende en professionele organisatie met een gezonde dosis humor en veel vrijheid om jezelf te ontwikkelen. Als No-Code Betty Blocks ontwikkelaar werk je vanuit ons kantoor in het hart van Nederland, je thuiswerkplek of op locatie bij de klant. We faciliteren de juiste trainingen en ondersteuning zodat je een echte Betty Blocks expert wordt. Naast het werk zijn er bij ons bijzondere events, zoals een jaarlijkse zeildag, een zomerse barbecue en een knus kerstdiner om de grillige maanden door

Bekijk vacature »

Java Developer

Java Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »
Micha

Micha

16/01/2008 01:41:00
Quote Anchor link
Hallo!

Ik ben al een tijdje bezig met OOP, maar nu is mijn oog gevallen op het Singleton design pattern.

Ik heb een beetje rond gelezen en dacht, hier ga ik eens wat mee uitproberen. Wat ik nu wil, is een singleton database class in meerdere classes kunnen gebruiken. Hoe kan ik dit het beste doen?

De code:

Database.class.php
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 Database {
    // Store the single instance of Database
    private static $m_pInstance;

    private function __construct()
    {

        echo "Constructor called<br />\n";
    }


    public static function getInstance()
    {

        if (!self::$m_pInstance)
        {

            self::$m_pInstance = new Database();
        }


        return self::$m_pInstance;
    }

    
    public function query()
    {

        echo "Query is called<br />";
    }
}

?>


Normaal gesproken roep je hem zo aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    $pDatabase
= Database::getInstance();
    $pDatabase->query();
?>


Maar als ik nu bijvoorbeeld deze database class in meerdere classes wil gebruiken, moet ik dan elke keer als ik een query uit wil voeren die code gebruiken, of kan dit makkelijker?
 
PHP hulp

PHP hulp

22/12/2024 10:04:27
 
Mr D

Mr D

16/01/2008 10:17:00
Quote Anchor link
Je kan in de constructor van je andere klasses zoiets doen
$this->db = Database::getInstance();
 
Martijn B

Martijn B

16/01/2008 10:51:00
Quote Anchor link
Je kunt ook een centrale klasse maken en daarin al je hoofd objecten aanmaken:

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
<?php
class Engine
{

  function
__construct()
  {

      $this->oDB = new Database;
      $this->oIetsAnders = new IetsAnders(this);
  }
}


class IetsAnders
{
   function
__construct( Engine $oEngine )
   {

      $oEngine->oDB->query('blaat');
   }
}

?>


PHP5 geeft objecten als referentie mee dus alle engine objecten zijn dezelfde.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Jelmer -

Jelmer -

16/01/2008 18:21:00
Quote Anchor link
Met het idee van Martijn werk je als het ware in een soort context. Engine is je context, de 'leefruimte' van je applicatie. Dan vraag ik mij weer af: is dit handig? Komt het voor dat je binnen 1 applicatie verschillende contexten nodig hebt - verschillende engines? Zo niet, dan is singleton volgens mij handiger omdat je zo de constructor vrij houdt voor parameters voor het object zelf. Daarnaast hoef je je dan bij ingewikkeldere constructies (met call_user..., ReflectionClass::newInstance, PDOStatement::fetch(PDO_CLASS)) niet druk te maken over je wel goed meegegeven context.

Je zou ook eens naar het Registery Pattern kunnen kijken. Eigenlijk is dat ongeveer wat Martijn! doet. Echter kan je er ook voor kiezen om alleen het register Singleton te maken, dan heb je en de voordelen van Singleton (geen vooraf vastgelegde argumenten) en de voordelen van Martijn's implementatie (geen Singleton in tal van klassen te hoeven implementeren)

Last but not least:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class SingletonImplementatie {
    static public function instance() {
        static $instance;
        return $instance ? $instance : $instance = new self();
    }
}

?>

Volgens mij de kleinst mogelijke singleton-implementatie in PHP.
 
Martijn B

Martijn B

16/01/2008 18:28:00
Quote Anchor link
Je moet het voorbeeld van mij eigenlijk zien als gereedschapskist van de applicatie.

In de constructor van de engine heb ik (het gereedschap :P):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$this
->oDB        = new CMysql;
$this->oUser        = new CUser($this);
$this->oStorage        = new CStorage;
$this->oCache        = new CCache($this);
$this->oCategory    = new CCategory($this);
$this->oProduct        = new CProduct($this);
$this->oTrolley        = new CTrolley($this);
$this->oOrder        = new COrder($this);
$this->oForm        = new CForm($this);
$this->oMail        = new PHPMailer;
?>


Tis een webwinkel ;P

Nu bestaat mijn webwinkel uit diverse acties.

Iedere acties is geimplementeerd als klasse.
Deze erft over van een algemene klasse, waarin algemene zaken voor alle acties worden uitgevoerd.

dus:
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
<?php
abstract class CAction
{
  final function __construct( array $_aConf )
  {

     $this->oEngine = new CEngine($_aConf);
     $this->oTpl = new Stormy;
  }


  abstract function go();
}


class CAction_view_product extends CAction
{
  function
go(){}
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Bo az

Bo az

16/01/2008 18:29:00
Quote Anchor link
Je hebt de constuctor van je klasse netjes private gemaakt, maar je zal ook de clone methode nog private moeten maken. Anders kan je dmv het clonen van je object als nog twee verschillende instanties krijgen ondanks dat je het singleton pattern gebruikt.
 



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.