Beheerder |
|
Op dit moment spoken er allerlei gedachten door me hoofd betreffende singleton.
Ik wil graag hetvolgende principe bereiken:
<?php
class Singleton {
private static $aInstances = array();
public function getInstance ($name) {
if(isset($this->aInstances[$name]) {
// Instantie van de class bestaat al dus geef deze terug
return $this->aInstances[$name];
} else {
// Instantie van de class bestaat nog niet
$this->aInstances[$name] = new $name();
return $this->aInstances[$name];
}
}
}
// Voorbeeld van $aInstances kan dus zijn:
private static $aInstances = array(
'db' => ( object ) db class,
'blog' => ( object ) blog class
);
?>
<?php class Singleton { public function getInstance ($name) { if(isset($this->aInstances[$name]) { // Instantie van de class bestaat al dus geef deze terug return $this->aInstances[$name]; } else { // Instantie van de class bestaat nog niet $this->aInstances[$name] = new $name(); return $this->aInstances[$name]; } } } // Voorbeeld van $aInstances kan dus zijn: 'db' => ( object ) db class, 'blog' => ( object ) blog class ); ?>
Echter wat gebeurt er nu als je wel meerdere db connecties wil hebben met verschillende connectie parameters?
Simpel zullen de meeste zeggen:
Maak je $aInstances in een vorm als deze (vlugge schets)
<?php
private static $aInstances = array(
'db' => array( 0 => array( ( object ) db class, 'localhost', 'root', 'foo',
1 => array( ( object ) db class, '12.34.57.89', 'admin', 'bar' ),
'blog' => ( object ) blog class
);
?>
<?php 'db' => array( 0 => array( ( object ) db class, 'localhost', 'root', 'foo', 1 => array( ( object ) db class, '12.34.57.89', 'admin', 'bar' ), 'blog' => ( object ) blog class ); ?>
Echter heb ik meerdere topics en reacties gelezen over Singleton. Het zou dus eigenlijk niet mogen hoe bovenstaande oplossing werkt. Nu is mijn vraag, wat is dan een betere methode hiervoor?
|