dedlfix: Objekt einer Klasse in anderer Klasse nutzen

Beitrag lesen

echo $begrüßung;

Gestattest du eine Korrektur und zwei Anmerkungen? (-:

  

> class singleton {  
>   function sigleton($host,$user,$pass,$db) {  
>     # mach was, Verbindung herstellen, etc, pp  
>   }  
>   
>   function getInstance($host,$user,$pass,$db) {  

Bei Rückgabe einer Referenz muss das & sowohl bei der Funktionsdeklaration als auch bei der Verwendung angegeben werden:

function &getInstance($host,$user,$pass,$db) {

  

>     static $instance;  
>   
>     if(!isset($instance)) $instance = new sigleton($host,$user,$pass,$db);  

Hier kann es sinnvoll sein, eine Referenz des erzeugten Objekts statt einer Kopie davon zu speichern. Das kommt hauptsächlich drauf an, ob mit weiteren Referenzen im Konstruktor gearbeitet wird.

if(!isset($instance)) $instance =& new sigleton($host,$user,$pass,$db);

return $instance;
  }
}


>   
> Jetzt kannst du an jeder Stelle deines Codes die gleiche Instanz deiner  
> Datenbank-Klasse bekommen, indem du getInstance() aufrufst:  
>   
> ~~~php
  

> $db =& singleton::getInstance("param1","param2","param3","param4");  
> 

Abschließend sei noch darauf hingewiesen, dass PHP5 bei der Übergabe von Objekten von Haus aus mit Referenzen statt Kopien arbeitet, die & also entfallen können.
Wenn man nicht kompatibel zu PHP4 sein muss/möchte hält das Handbuch eine Implementation des Singleton-Patterns bereit: http://de2.php.net/manual/en/language.oop5.patterns.php

echo "$verabschiedung $name";