2017-08-26 2 views
0

Ich habe dieses Stück Code, dass ich nicht in der Lage bin zu verstehen:Array von Objekt in PHP, aber unterschiedlicher Art und Weise

public static function getInstance() 
{ 
    static $Instances = array(); 
    $key = "localhost:iotatut:PASSWORD:DATABASE"; 
    if(!isset($Instances[$key])){ 
     $Instances[$key] = new Database(); 
    } 
    return $Instances[$key]; 
} 

Datenbank ist der Name der Klasse und getInstance ist der Name der Member-Funktion. getInstance wird von einer anderen Datei aufgerufen, und die Datei Datenbank.php ist enthalten, in der die Datenbankklasse erstellt wird. Ich möchte wissen, was passiert, wenn die Bedingung ausgeführt wird und angenommen wird, dass sie zum ersten Mal ausgeführt wird Instanzen [$ key] = neue Datenbank();

+0

Was ist der Fehler, den Sie bekommen? – mindaJalaj

+0

@harvider ist dies der genaue Code oder haben Sie gerade die gewünschten Bits ausgewählt? –

Antwort

0
+0

ich bin nicht ganz sicher, was genau es ist, ich habe diese Datei und es war gut für mich bu irgendwie jetzt mein neuer Server verwendet PHP 7, also muss ich mysqli verwenden .. das, warum ich einige Änderungen in diesem Code vornehmen müssen .. und ich bekomme nicht, was genau diese Linie tut .... –

+0

@harvindersingh Ich werde davon ausgehen, dass diese Linie eine neue Verbindung und Klasse erstellt, wenn dies nicht zuvor getan wurde. – HouseInTheForest

0

Wie @HouseInTheForest weist darauf hin, ist dies eine klassische Funktion ein Singleton-Objekt zu erhalten.

Sie verwenden ein Singleton, wenn nur eine Instanz dieses Objekts in Ihrem Code vorhanden sein soll, unabhängig davon, wo Sie es aufrufen. Daher speichern Sie die Instanz des Objekts im Objekt selbst und geben das Objekt auf Anforderung zurück. Das Singleton wird hauptsächlich für Datenbankverbindungen verwendet (Sie möchten bei jeder Abfrage keine neue Verbindung erstellen) und Protokollklassen (Sie möchten eine Protokollklasse, die alle Informationen enthält.

Unten einige Kommentare zu was der Code tut

// Method to get the instance of the singleton object, by calling this method statically. thus: $oDB = Database::getInstance(); 
public static function getInstance() 
{ 
    // static variable to hold the instance of the object in 
    static $Instances = array(); 
    // I guess this line holds the host:user:password:database to connect to the database server (mostly MySql) 
    $key = "localhost:iotatut:XXXXXXXX:DATABASE"; 
    // If an instance with this key combination does not exist, setup a new Database object to hold the information 
    if(!isset($Instances[$key])){ 
     $Instances[$key] = new Database(); 
    } 
    // Return the instance to the Database object. 
    return $Instances[$key]; 
} 

. Hinweis:. in Ihrem Kommentar, den Sie sich beziehen auf mysqli Ab PHP 7 mysql entfernt ist und Sie PHP mysqli verwenden die ganze Klasse muss aktualisiert werden, dass bedeutet, jede Zeile mit mysql_XXXX (z. B. mysql_connect, mysql_query usw.) muss auf mysqli_connect, mysqli_query usw. aktualisiert werden. Darüber hinaus müssen Sie die Verbindung mit jedem c bereitstellen alles ... Wenn Sie nicht wissen, was Sie tun, fragen Sie einen Programmierer.

Verwandte Themen