Es ist im Grunde ein Singleton-Entwurfsmuster , das eine Funktion anstelle einer statischen Methode verwendet.
Um genauer hinzuschauen, lesen Sie den Quellcode
Im Grunde erzwingt es den Singleton nicht, aber es ist eine Verknüpfung zu einer öffentlichen Funktion ...
Edit: Eigentlich verstehe ich jetzt. Aus Gründen der PHP4-Kompatibilität mussten sie einen Double-Global-Variable-Hack durchführen , damit die Referenzen ordnungsgemäß zurückgegeben wurden. Andernfalls würden die Referenzen alle vermasselt. Und da PHP4 keine Unterstützung für statische Methoden hatte (na ja, sowieso richtig), war die Verwendung der Funktion der bessere Weg. Es existiert also immer noch aus alten Gründen ...
Wenn Ihre App also nur PHP5 ist, sollte nichts falsch daran sein, CI_Base::get_instance();
stattdessen ist sie identisch ...
$CI =& get_instance();
ich habe mein Gesicht auf die Docs geschlagen, um danach zu suchen ...get_instance () ist eine Funktion, die in den Kerndateien von CodeIgniter definiert ist. Sie verwenden es, um die Singleton-Referenz auf das CodeIgniter-Superobjekt abzurufen, wenn Sie sich in einem Bereich außerhalb des Superobjekts befinden.
Ich bin mir ziemlich sicher, dass es in base.php oder ähnlichem definiert ist.
quelle
Nur die Klasse, die CI_Controller, Model, View erweitert, kann verwendet werden
Ihre benutzerdefinierte Klasse kann den obigen Code nicht verwenden. Um die oben genannten Funktionen in Ihrer benutzerdefinierten Klasse zu verwenden, müssen Sie sie verwenden
Zum Beispiel in Ihrer benutzerdefinierten Klasse
quelle
Dies ist eine Singleton-Struktur, um zu verstehen, wie der Codeigniter die Bibliotheken und Klassen lädt
quelle
$ CI = get_instance (); ist es, $ this durch $ CI im Helfer zu ersetzen,
quelle