Ein Unterstrich in PHP steht für private Variablen und private Methoden, und zwei Unterstriche sind in PHP integrierte Variablen. PHP legt beispielsweise fest, dass Methoden, die mit zwei Unterstrichen beginnen, als magische Methoden reserviert sind. Daher wird empfohlen, dass Ihre Funktionsnamen dies nicht tun Beginnen Sie mit __ , es sei denn, es geht darum, eine vorhandene magische Methode zu überladen.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
Was bedeutet der PHP-Unterstrich?
Die Bedeutung von Variablen, die in PHP mit einem Unterstrich beginnen
Benennung Regeln
Eins hinzufügen Für privat
ist das Hinzufügen von zwei im Allgemeinen die Systemstandardeinstellung und wird vom System vordefiniert, dh das sogenannte:
================= =====
„Magische“ Methoden“ und „Magische Konstanten“
======================
★PHP-Konstanten, die mit beginnen und enden Doppelte Unterstriche sind „magische Konstanten“:
__LINE_ _Die aktuelle Zeilennummer in der Datei.
__FILE__Der vollständige Pfad und Dateiname der Datei.
__DIR__Das Verzeichnis, in dem sich die Datei befindet. Bei Verwendung innerhalb einer eingebundenen Datei wird das Verzeichnis zurückgegeben, in dem sich die eingebundene Datei befindet. Es entspricht dirname(__FILE__). Sofern es sich nicht um das Stammverzeichnis handelt, enthält der Name im Verzeichnis keinen abschließenden Schrägstrich
Hinweis: Der obige Inhalt stammt aus „PHP Chinese Manual->Language Reference->Constant->Magic Constant“.
Ab PHP5 und späteren Versionen können PHP-Klassen magische Methoden verwenden.
PHP legt fest, dass Methoden, die mit zwei Unterstrichen (__) beginnen, als magische Methoden reserviert sind. Daher wird empfohlen, dass Ihr Funktionsname nicht mit __ beginnt, es sei denn, er soll eine vorhandene magische Methode überladen.
Die magischen Methoden in PHP sind: __construct, __destruct, __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __set_state, __clone, __autoload
1, __get, __set
Diese beiden Methoden sind entworfen für Eigenschaften, die nicht in Klassen und ihren Superklassen deklariert sind
__get( $property ) Diese Methode wird ausgelöst, wenn eine undefinierte Eigenschaft aufgerufen wird, und übergibt den Namen der Eigenschaft, auf die zugegriffen wird
__set ($property, $value) Beim Zuweisen eines Werts zu Wenn es sich um eine undefinierte Eigenschaft handelt, werden bei dieser Methode der festgelegte Eigenschaftsname und der Wert angegeben, bei dem die Zugriffskontrolle geschützt ist Zugriffserlaubnis).
2, __isset, __unset
__isset( $property ) Diese Methode wird aufgerufen, wenn die Funktion isset() für eine undefinierte Eigenschaft aufgerufen wird
__unset( $property ) Wenn unset() für eine undefinierte Eigenschaft aufgerufen wird. Diese Methode ist Wird während einer Funktion aufgerufen
Das Gleiche wie die __get-Methode und die __set-Methode. Die hier nicht deklarierten Attribute umfassen geschützte und private Attribute (d. h. Attribute ohne Zugriffsberechtigung), wenn sie mit einem Objekt aufgerufen werden
3 __call( $method, $arg_array ) Diese Methode wird aufgerufen, wenn eine undefinierte Methode aufgerufen wird
Die undefinierten Methoden hier umfassen Methoden, die keine Zugriffsberechtigung haben; wenn die Methode nicht vorhanden ist, gehen Sie zur übergeordneten Klasse, um die Methode zu finden. Wenn die übergeordnete Klasse nicht vorhanden ist, rufen Sie die Methode __call() dieser Klasse auf. Wenn die Methode __call() in dieser Klasse nicht vorhanden ist, wechseln Sie zur Methode __call() der übergeordneten Klasse
4. __autoload
__autoload Funktion, die automatisch aufgerufen wird, wenn versucht wird, eine Klasse zu verwenden, die noch nicht definiert wurde. Durch den Aufruf dieser Funktion hat die Skript-Engine eine letzte Chance, die erforderlichen Klassen zu laden, bevor PHP mit einem Fehler abstürzt.
Wenn Sie eine globale Autoloading-Klasse definieren möchten, müssen Sie die Methode spl_autoload_register() verwenden, um die Verarbeitungsklasse in der PHP-Standardbibliothek zu registrieren:
<?php class Loader { static function autoload_class($class_name) { //寻找正确的$class_name类,并引入,没有则抛出异常 } } /** * 设置对象的自动载入 * spl_autoload_register — Register given function as __autoload() implementation */ spl_autoload_register(array('Loader', 'autoload_class')); $a = new Test();//Test没用require就实例化,实现自动加载,很多框架就用这种方法自动加载类 ?>
Hinweis: In der __autoload-Funktion ausgelöste Ausnahmen können nicht vom Catch-Anweisungsblock abgefangen werden und einen schwerwiegenden Fehler verursachen, daher sollte er in der Funktion selbst abgefangen werden.
5, __construct, __destruct
__construct Konstruktormethode, diese Methode wird aufgerufen, wenn ein Objekt erstellt wird. Der Vorteil der Verwendung dieser Methode im Vergleich zu PHP4 besteht darin, dass die Konstruktormethode unabhängig vom Namen der Klasse einen eindeutigen Namen haben kann Wenn Sie also den Namen der Klasse ändern, müssen Sie den Namen der Konstruktormethode nicht ändern. PHP ruft diese Methode auf, bevor das Objekt zerstört wird , bevor es aus dem Speicher gelöscht wird). Standardmäßig gibt PHP nur den von Objekteigenschaften belegten Speicher frei und zerstört objektbezogene Ressourcen. Mit dem Destruktor können Sie beliebigen Code ausführen, um den Speicher nach der Verwendung eines Objekts zu löschen. Wenn PHP entscheidet, dass Ihr Skript nicht mehr mit dem Objekt verknüpft ist, wird der Destruktor aufgerufen.
Im Namensraum einer Funktion geschieht dies, wenn die Funktion zurückkehrt.
Bei globalen Variablen geschieht dies am Ende des Skripts.
Wenn Sie ein Objekt explizit zerstören möchten, können Sie der Variablen, die auf das Objekt zeigt, einen beliebigen anderen Wert zuweisen oder unset 6, __clone
Object-Zuweisung verwenden Wenn Sie ein Objekt kopieren möchten, müssen Sie die Klonmethode verwenden. Wenn diese Methode aufgerufen wird, ruft das Objekt automatisch die magische Methode __clone auf. Wenn beim Kopieren des Objekts einige Initialisierungsvorgänge ausgeführt werden müssen in der __clone-Methode.
7. Die Methode __toString
__toString wird automatisch aufgerufen, wenn ein Objekt in einen String konvertiert wird, beispielsweise wenn Echo zum Drucken des Objekts verwendet wird.
Wenn die Klasse diese Methode nicht implementiert, kann das Objekt nicht über Echo gedruckt werden, andernfalls wird Folgendes angezeigt: Abfangbarer schwerwiegender Fehler: Das Objekt des Klassentests konnte in nicht in einen String konvertiert werden
Diese Methode muss einen String zurückgeben.
Vor PHP 5.2.0 kann die __toString-Methode nur wirksam werden, wenn sie in Verbindung mit echo() oder print() verwendet wird. Nach PHP 5.2.0 kann es in jeder String-Umgebung wirksam werden (z. B. über printf() unter Verwendung des Modifikators %s), kann jedoch nicht in Nicht-String-Umgebungen verwendet werden (z. B. unter Verwendung des Modifikators %d). Wenn ab PHP 5.2.0 ein Objekt, das die Methode __toString nicht definiert, in einen String konvertiert wird, wird ein E_RECOVERABLE_ERROR-Fehler gemeldet.
8, __sleep, __wakeup
__sleep Verwenden Sie beim Serialisieren
__wakeup. Rufen Sie beim Deserialisieren
serialize() auf, um zu überprüfen, ob es in der Klasse eine Funktion mit dem magischen Namen __sleep gibt. Wenn dies der Fall ist, wird die Funktion vor der Serialisierung ausgeführt. Es löscht das Objekt und sollte ein Array zurückgeben, das die Namen aller Variablen im Objekt enthält, die serialisiert werden sollen.
Der Zweck der Verwendung von __sleep besteht darin, alle Datenbankverbindungen des Objekts zu schließen, ausstehende Daten zu übermitteln oder ähnliche Bereinigungsaufgaben durchzuführen. Darüber hinaus ist diese Funktion nützlich, wenn Sie sehr große Objekte haben, die nicht vollständig eingelagert werden müssen.
Im Gegensatz dazu prüft unserialize() die Existenz einer Funktion mit dem magischen Namen __wakeup. Diese Funktion kann alle Ressourcen rekonstruieren, über die das Objekt verfügt, sofern vorhanden.
Der Zweck der Verwendung von __wakeup besteht darin, alle Datenbankverbindungen wiederherzustellen, die möglicherweise während der Serialisierung verloren gegangen sind, und andere Neuinitialisierungsaufgaben zu erledigen.
9. __set_state
Wenn var_export() aufgerufen wird, wird diese statische Methode aufgerufen (gültig seit PHP 5.1.0).
Der einzige Parameter dieser Methode ist ein Array, das Klasseneigenschaften enthält, die im Array-Format angeordnet sind („Eigenschaft“ => Wert, …).
10. __invoke
Beim Versuch, ein Objekt durch Aufrufen einer Funktion aufzurufen, wird die __invoke-Methode automatisch aufgerufen.
PHP5.3.0 und höher sind gültig
11. __callStatic
Es funktioniert ähnlich wie die magische Methode __call(), __callStatic() dient der Verarbeitung statischer Methodenaufrufe,
PHP5.3.0 und höher ist gültig
PHP Indeed Strengthened die Definition der Methode __callStatic(); sie muss öffentlich sein und als statisch deklariert werden. Ebenso muss die magische Methode __call() wie alle anderen magischen Methoden als öffentlich definiert werden.
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas bedeutet PHP-Unterstrich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!