Statische Methoden:
Beispiel
class A{ public static function a(){ # code ... } public static function b(){ # code ... } } // 使用 A::a(); A::b();
Wenn das Skript interpretiert wird, werden statische Methoden in den Speicher geladen (und in einer einzigen Kopie gespeichert). ). Sie können es wie eine Funktion verwenden.
Einzelfall:
Um zu realisieren, dass nur eine einzige Kopie einer Klasse im Speicher gespeichert ist, wird ein Entwurfsmuster durch Code unter Verwendung statischer Variablen implementiert
Beispiel
class Container(){ protected static $loadedSingletonClasses = []; public static function loadSingletonClass($className=''){ if(!isset(self::$loadSingletonClass[$className])){ self::$loadSingletonClass[$className] = new $className; } return self::$loadSingletonClass[$className]; } } $a = Container::loadSingletonClass("foo\bar\MyClass"); $b = Container::loadSingletonClass("foo\bar\MyClass");
Die $a $b-Variablen im obigen Code verweisen auf dieselbe Speicheradresse (aber wenn Sie die Klasse auslösen möchten durch diese beiden Variablen instanziiert Der Destruktor muss alle diese beiden Variablen zerstören. Weitere Informationen finden Sie in der Wissenszusammenfassung in PHP objektorientiert)
Der Unterschied zwischen Singletons und statischen Methoden ist statisch Methoden werden Das Skript wird in den Speicher geladen, wenn es interpretiert wird. Der Singleton wird nur in den Speicher geladen, wenn er neu ist (vorausgesetzt, dass beide Codes in den Speichercodebereich geladen werden)
Automatisches Laden:
Es gibt eine Erklärung zum automatischen Laden (dem Implementierungsmechanismus des automatischen Ladens in PHP) vor
Geerbte Klassen, Schnittstellen-Unterklasse erweitert übergeordnete Klasse{}
Zu diesem Zeitpunkt wird die automatische Ladefunktion ausgelöst :
Wenn wir use verwenden, um die Klasse mit einem Alias zu versehen, ist der übergebene Klassenname auch die Klasse vor dem Alias.
Das Obige führt den Vergleich zwischen Singleton- und statischen Methoden in PHP objektorientiert ein Die Analyse des automatischen Ladens von Klassen, einschließlich Aspekten, finden Sie auf der chinesischen PHP-Website (www.php.cn).