PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Andere Klasse aus Klasse aufrufen (http://www.selfphp.de/forum/showthread.php?t=7995)

Fuchs 27.06.2004 18:51:47

Zitat:

Nachtrag:
Vorschläge, Verbesserungen nehme ich dankend an.
Google mal nach dem Stichwort Singleton in verbindung mit php, da findest du was du suchst.

René_M 28.06.2004 08:31:29

Hi Fuchs,

wenn ich das richtig verstanden habe dann müßte ich ja in den beiden anderen Classen ebenfalls die Logindaten einfügen damit die dann die Daten an die Classe "datenbank" übergeben. Das einzigste Problem war doch aber nur das die Kennung "$this->conn" nicht da war wenn ich db_query aus der Kind-Classe heraus aufrufe.

Wenn es dir möglich wäre könntest du das an dem Code oben anpassen falls es doch einfacher geht bzw. so das es wirklich richtig ist.

Danke!

Fuchs 28.06.2004 21:24:53

Ich hab hier mal ganz grob eine Loesungemoeglichkeit entworfen:

PHP-Code:

$GLOBALS['__datenbank_config'] = array();

class 
datenbank {


    function 
datenbank($id 0) {
        
$conf =& $GLOBALS['__datenbank_config'][$id];
        list(
$this->host$this->user$this->pass$this->db) = $conf;
        
// connect etc.
    
}

    function &
getInstance($id 0) {
        static 
$instance = array();
        if (
is_null($instance[$id])) {
            
$instance[$id] =& new datenbank($id);
        }
        return 
$instance;
    }
    
    function 
setConfig($host$user$pass$db$id 0) {
        
$conf =& $GLOBALS['__datenbank_config'];
        
$conf[$id] = array($host$user$pass$db);        
    }
}

//Das ganze koennte man dan so verwenden:

Datenbank::setConfig('localhost''test''''test');

Class 
foo 
    function 
foo() {
         
$this->db =& Datenbank::getInstance();
// $this->db->query() etc...
    
}


Wie gesagt man koennte es auch anders Loesen. Fehlerueberpruefung fehlt (gibt es diese ID?). Den unschoenen Weg ueber global kann man sich mit der ZE2 und statischen Klassenvariablen sparen.

HTH Andre


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:27:20 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.