• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 30 december 2025 om 22:29
  • Developer Gezocht

    K.Rens 30 december 2025 om 12:32
  • Op zoek naar de legends

    Jeffrey.Hoekman 9 december 2025 om 09:41
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Registery VS Factory

  • Stefan.J
  • 25 mei 2009 om 20:25
  • Closed
  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 25 mei 2009 om 20:25
    • #1

    Toelichting
    Mensen die verstand van zaken hebben, zullen waarschijnlijk vragen hebben bij deze topic-titel: Inderdaad, geen standaard Registery VS Singleton, maar Registery VS Factory!
    Op dit moment ben ik bezig met het schrijven van een eigen MVC framework, wat voorlopig enkel de basis voorstelt. De meeste onderlinge relaties tussen (typen) classes heb ik in kaart gebracht, nu rest mij (voorlopig) nog één probleem.

    De probleemstelling
    Waar ik eerder altijd een Registery gebruikte, om
    Singleton te voorkomen, wil ik dit nu gaan veranderen. Eerst wilde ik mijn Registery gaan uitbreiden om problemen ermee op te lossen, maar nadat dit eigenlijk niet lukte, ga ik nu over op een andere oplossing.
    Een Registery is bedoeld als oplossing om Objecten door te geven aan verschillende andere Objecten, denk hierbij bijvoorbeeld aan het Database object. Maar met het idee in het achterhoofd dat meerdere database connecties mogelijk zijn, loopt deze techniek op een dood einde: Met een Registery moet de class die een database connectie nodig heeft zelf kiezen welke connectie hij nodig heeft, de omgedraaide wereld!
    Ik werk met het MVC model. Ik heb me al bedacht: Zodra een andere connectie nodig is dan de standaard connectie, is dit zaak van de controller, en niet van de models. De controller zal dus hoe dan ook, connecties door moeten geven aan de models. Maar hoe? En hoe komt de controller aan de connectie?

    (Verworpen) oplossingen
    Er zijn enkele oplossingen waar ik al aan heb gedacht:
    Singleton: Dit is geen mogelijkheid, zo kan er enkel één database connectie bestaan, dat willen we niet.
    Registery: Dit is een mogelijkheid, maar hierdoor ontstaat de omgedraaide wereld: Een class moet zelf gaan kiezen welke connectie hij gebruikt, in plaats van dat hij een connectie mee krijgt.
    Connecties meegeven: Dit zou kunnen, maar heel tijd alle connecties meegeven heb ik geen zin in. Zeker niet aan de controllers.
    Een factory: Mijn voorlopige oplossing. Een factory houd de connecties bij, en wanneer je een connectie nodig hebt, haal je deze uit de factory. Bestaat de connectie al? Dan geeft hij deze mee, bestaat de connectie nog niet, wordt hij aangemaakt.


    Mijn vraag aan jullie, hebben jullie nog andere oplossingen en of ideeën? Alle informatie is welkom!

  • Guest, wil je besparen op je domeinnamen? (ad)
  • suryoyo0
    Lid sinds 2005
    Berichten
    183
    • 25 mei 2009 om 21:14
    • #2

    Volgens mij is CP nog niet aan toe aan dit soort vragen, ik weet zeker dat 95% van alle leden niet weten waar je het over hebt.:p

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 25 mei 2009 om 21:17
    • #3

    Ja, een reactie! Dat dacht ik tenminste.:p Laat die andere 5% dan maar reageren.;) Er moet toch wel iemand zijn die dit kan volgen?

    Krijg ik een reactie, is het één zin met een mededeling.:p

    Nu weer ontopic!

  • Niels
    -1
    Berichten
    1.360
    • 25 mei 2009 om 21:30
    • #4

    Ik begrijp je hele gedoe wel :p Heb voor mijn alpha MVC dat nog niet echt erin verwerkt. Maar ik wou toch alles behalve de database class overnieuw schrijven nog ;) Als ik dan een goed antwoord vind zal ik hem wel opsturen:)

    -1

  • MrMees
    De causeur!
    Berichten
    464
    • 25 mei 2009 om 21:31
    • #5

    Dus jij wilt ipv 1 verbinding met de database, meerdere verbindingen mag ik vragen waarom je dat wilt?
    Of bedoel je meerdere verbindingen met meerdere databases?

    Ik had er wat over gegoogled, wat jij waarschijnlijk ook heb gedaan, maar ik kwam dit tegen : Hier.

    Voor de zekerheid maar neergezet, hier wordt namelijk ook nog gesproken over een abstract factory, dit is nog niet vermeld en misschien is dit wat je zoekt ;).

    Rembo&Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 25 mei 2009 om 23:27
    • #6

    MrMees: Ga die link je je stuurde zo nog even doornemen. Voor nu heb ik de volgende class:

    PHP
    <?php
    
    
    /**
     * De PDOFactory maakt instanties van PDO aan, maar enkel als het nodig is.
     * @author Stefan Jansen
     */
    class PDOFactory {
    	/**
    	 * Deze array bewaard de instanties van de PDO classes.
    	 * @var array Alle instanties
    	 */
    	private static $m_aInstances = array();
    	
    	/**
    	 * De inhoud van de array ziet er als volgd uit:
    	 * array( [1] => array( [dsn] => "", [username] => "", [password] => "" ), [2] => array(..) )
    	 * @var array Informatie over de instanties
    	 */
    	private static $m_aInformation = array();
    	
    	/**
    	 * Geeft een instantie van PDO terug. Voorkomt onnodig veel PDO instanties 
    	 * door aan de hand van de DNS te controleren of de instantie al bestaat.
    	 * @param string $p_sDSN DSN van de juiste verbinding
    	 * @param string[optional] $p_sUsername Username van de verbinding
    	 * @param string[optional] $p_sPassword Password van de juiste verbinding
    	 * @return PDO PDO klasse met de juiste verbinding
    	 * @throws PDOException
    	 */
    	public static function getInstance($p_sDSN,$p_sUsername = null,$p_sPassword = null) {
    		foreach(self::$m_aInformation as $iInstanceKey => $aInstanceInfo) {
    			if($aInstanceInfo['dsn'] == $p_sDSN) {
    				//Instantie gevonden.
    				return self::$m_aInstances[$iInstanceKey];
    			}
    		}
    		//Hier aangekomen: Geen instantie in de instantie array.
    		//Met de gegevens proberen een instantie te maken.
    		if($p_sUsername == null) {
    			$iInsertKey = count(self::$m_aInformation);
    			self::$m_aInformation[$iInsertKey] = array('dsn' => $p_sDSN,'username' => null,'password' => null);
    			self::$m_aInstances[$iInsertKey] = new PDO($p_sDSN);
    			return self::getInstance($p_sDSN);
    		} else if($p_sPassword == null) {
    			$iInsertKey = count(self::$m_aInformation);
    			self::$m_aInformation[$iInsertKey] = array('dsn' => $p_sDSN,'username' => $p_sUsername,'password' => null);
    			self::$m_aInstances[$iInsertKey] = new PDO($p_sDSN,$p_sUsername);
    			return self::getInstance($p_sDSN);
    		} else {
    			$iInsertKey = count(self::$m_aInformation);
    			self::$m_aInformation[$iInsertKey] = array('dsn' => $p_sDSN,'username' => $p_sUsername,'password' => $p_sPassword);
    			self::$m_aInstances[$iInsertKey] = new PDO($p_sDSN,$p_sUsername,$p_sPassword);
    			return self::getInstance($p_sDSN);
    		}
    	}
    }
    
    
    ?>
    Toon Meer

    En als praktische toepassing dit:

    PHP
    <?php
    
    
    try {
    	$PDO1 = PDOFactory::getInstance('mysql:dbname=test2;host=127.0.0.1','root');
    } catch(PDOException $e) {
    	print $e->getMessage();
    }
    
    
    $PDO1->hallo = "Hallo Wereld.";
    
    
    //Hallo Wereld
    print $PDO1->hallo;
    
    
    try {
    	$PDO2 = PDOFactory::getInstance('mysql:dbname=test2;host=127.0.0.1','root');
    } catch(PDOException $e) {
    	print $e->getMessage();
    }
    
    
    //Hallo Wereld
    print $PDO2->hallo;
    
    
    ?>
    Toon Meer

    Nog mensen ideeën wat beter kan, of wat juist goed is?

  • Niels
    -1
    Berichten
    1.360
    • 25 mei 2009 om 23:38
    • #7

    Bah geen a in de zin van array gebruiken in combinatie met een variabele:

    PHP
    self::$m_aInformation


    :P Tevens geen hoofdletters gebruiken. Zal morgen eens kijken of er nog wat dingen beter kunnen e.d. :)

    -1

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 25 mei 2009 om 23:43
    • #8

    Niels: Dat is een kwestie van stijl.. Dit is een stijl die veel mensen erop na houden, en die ook ik erg fijn vind! Hoe ingewikkelder je scripts worden, hoe liever je die a'tjes in je scripts ziet staan.

    Ben benieuwd naar je (mogelijke) verbeteringen;)

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design