Was sind magische Methoden in PHP? und wie man sie umsetzt?



Dieser Artikel vermittelt Ihnen anhand von Beispielen ein detailliertes und umfassendes Wissen über die verschiedenen magischen Methoden in PHP.

Im Sonderfunktionen können so definiert werden, dass sie automatisch aufgerufen werden können und keinen Funktionsaufruf erfordern, um den Code innerhalb dieser Funktionen auszuführen. Diese Funktion ist in einer speziellen Methode verfügbar, die als magische Methoden bezeichnet wird. In diesem Artikel werden wir die wichtigsten magischen Methoden in PHP diskutieren.

Was sind magische Methoden in PHP?

Methoden, die mit 2 Unterstrichen (__) beginnen, werden in PHP im Allgemeinen als Magic-Methoden bezeichnet. Diese Methodennamen sind auf eine Liste von beschränkt PHP unterstützte Schlüsselwörter, die reserviert sind. Daher sollte keine Funktion mit dem Namen der magischen PHP-Methoden definiert werden.





Magic-Methods-in-PHP

Normalerweise sollten diese Funktionen vom Benutzer definiert werden und müssen nicht explizit aufgerufen werden.



Liste der magischen Methoden in PHP

  • __konstruieren()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ property)
  • __set ($ property, $ value)
  • __isset ($ content)
  • __unset ($ content)
  • __Schlaf()
  • __aufwachen()
  • __toString ()
  • __aufrufen()
  • __set_state ($ array)
  • __Klon()
  • __Debug-Informationen()
  • __konstruieren(): Diese Methode wird nach dem Erstellen eines Objekts automatisch aufgerufen. Hier kann eine beliebige Anzahl von Argumenten definiert werden, die beim Erstellen von Objekten übergeben werden.
Klassenbeispiel {Funktion user_def () {Echo 'Benutzerdefinierter Konstruktor'} Funktion __construct () {Echo 'vordefinierter Konstruktor'}} $ obj = neues Beispiel ()?>

  • __destruct (): Destruktor ist ein gemeinsames Merkmal der objektorientierten Sprache, das ausgelöst wird, sobald keine anderen Verweise auf ein bestimmtes Objekt vorhanden sind.
user_def () // prüfe, ob das Objekt zerstört ist oder nicht echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Diese Methode wird aufgerufen, wenn eine undefinierte oder unzugängliche Methode aufgerufen wird. Dies bedeutet, dass es aufgerufen wird, wenn eine undefinierte oder unzugängliche Methode für ein Objekt aufgerufen wird.
run ('Lehrer') // Wenn die nicht vorhandene Methode innerhalb des Objekts aufgerufen wird, wird die Methode __call () automatisch aufgerufen. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Diese Methode wird aufgerufen, wenn eine undefinierte oder unzugängliche Methode statisch aufgerufen wird.
user_define ()?>

  • __get ($ property): Diese Methode wird verwendet, um Werte für Klasseneigenschaften abzurufen, die dynamisch durch Überladen von PHP-Eigenschaften erstellt wurden.
name = $ name $ this-> reg = $ reg} öffentliche Funktion __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = neuer Student ('Ashok', 60) // Instanziiere das Objekt mit der Student-Klasse und weise Anfangswerte zu zu den Eigenschaften mit dem Konstruktor. Echo 'Name :'. $ obj-> name. '' // Wenn auf die private Eigenschaft zugegriffen wird, wird die __get () -Methode automatisch aufgerufen, sodass wir den Eigenschaftswert indirekt abrufen können. Echo 'reg :'. $ obj-> reg. '' // Die __get () -Methode wird automatisch aufgerufen , und gibt je nach Objekt unterschiedliche Werte zurück. ?>

  • __set ($ property, $ value): Diese Methode wird verwendet, um Werte für Klasseneigenschaften zu setzen, die dynamisch durch Überladen von PHP-Eigenschaften erstellt wurden.
name = $ name $ this-> reg = $ reg} öffentliche Funktion __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value öffentliche Funktion fun () {echo 'My Name ist '. $ this-> Name.', Meine Registrierungsnummer ist '. $ this-> reg}} $ obj = neuer Schüler (' Ashok ', 40) // Beachten Sie, dass der Anfangswert durch den Code geändert wird unten. $ obj-> name = 'Sushma' // Die Eigenschaft 'name' wird erfolgreich zugewiesen. Wenn es keine __set () -Methode gibt, löst das Programm eine Ausnahme aus. $ obj-> age = 16 // Die Eigenschaft 'reg' wird erfolgreich zugewiesen. $ obj-> reg = 160 // 160 ist ein ungültiger Wert, daher kann er nicht zugewiesen werden. $ obj-> fun ()?>

  • __isset ($ content); Diese Methode wird aufgerufen, während isset () oder empty () für ein undefiniertes oder unzugängliches Mitglied aufgerufen wird. Es wird automatisch aufgerufen, während mithilfe der PHP-Funktion isset () überprüft wird, ob eine erforderliche überladene Eigenschaft festgelegt ist oder nicht.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} öffentliche Funktion __isset ($ content) {echo 'Die Eigenschaft {$ content} ist privat , Die Methode __isset () wird automatisch aufgerufen. 'echo isset ($ this -> $ content)}} $ obj = neuer Schüler (' Ashok ', 30) // Anfangs zugewiesen. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ content): Diese Methode wird aufgerufen, während reset () für ein undefiniertes oder unzugängliches Mitglied aufgerufen wird.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} öffentliche Funktion __unset ($ content) {echo 'Wird automatisch aufgerufen, wenn wir die unset () -Methode außerhalb der Klasse verwenden. 'echo isset ($ this -> $ content)}} $ obj = neuer Schüler (' Ashok ', 30) // Anfangs zugewiesen. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __Schlaf(): Diese Methode wird zuerst aufgerufen, während serialize () ausgeführt wird. Es gibt das Eigenschaftsarray des Objekts zurück, wenn PHP-Klassenobjekte vor der Serialisierung bereinigt werden.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} öffentliche Funktion __sleep () {echo 'Wird aufgerufen, wenn die serialize () -Methode außerhalb der Klasse aufgerufen wird. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Es muss einen Wert zurückgeben, dessen Elemente der Name der zurückgegebenen Eigenschaften sind. }} $ obj = neuer Schüler ('Ashok') // Anfangs zugewiesen. echo serialize ($ obj) echo ''?>

wie man ein Zeichen in Java scannt
  • __aufwachen(): Diese Methode wird aufgerufen, während deserialization () ausgeführt wird. Es würde die Arbeit umkehren, um Objekteigenschaften und Ressourcen beim Aufrufen von Deserialization () wiederherzustellen.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} öffentliche Funktion __sleep () {echo 'Wird aufgerufen, wenn die serialize () -Methode außerhalb der Klasse aufgerufen wird. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Es muss einen Wert zurückgeben, dessen Elemente der Name der zurückgegebenen Eigenschaften sind. } public function __wakeup () {echo 'Wird aufgerufen, wenn die Methode unserialize () außerhalb der Klasse aufgerufen wird. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = neuer Student (' Ashok ') // Anfangs zugewiesen. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Diese Methode wird aufgerufen, während die Echo-Methode verwendet wird, um ein Objekt direkt zu drucken. Es wird erwartet, dass bei Verwendung von Klasseninstanzen mit PHP-Druckanweisungen ein Zeichenfolgenwert zurückgegeben wird.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} öffentliche Funktion __toString () {return 'go go go'}} $ obj = neuer Schüler ('Ashok') // Anfangs zugewiesen. echo $ obj?>

  • __aufrufen(): Diese Methode wird in einer Klasse definiert, die aufgerufen wird, während versucht wird, ein Objekt so aufzurufen, dass eine Funktion aufgerufen wird.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} öffentliche Funktion __invoke () {echo 'Dies ist ein Objekt'}} $ obj = neuer Schüler ('Ashok') // Anfangs zugewiesen . $ obj ()?>

  • __set_state ($ array): Diese Methode wird beim Aufruf von var_export () aufgerufen. Es ist eine statische Methode, die beim Exportieren des Objekteigenschaftsarrays aufgerufen wird und eine solche Arrayvariable als Argument erwartet.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = neuer Schüler ('Ashok') // Anfangs zugewiesen. var_export ($ obj)?>

  • __Klon(): Diese Methode wird aufgerufen, wenn das Objekt kopiert wird.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} öffentliche Funktion __clone () {echo __METHOD __. 'Sie klonen das Objekt. '}} $ obj = neuer Schüler (' Ashok ') // Anfangs zugewiesen. $ obj2 = Klon $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __Debug-Informationen(): Diese Methode wird von var_dump () aufgerufen, während ein Objekt ausgegeben wird, um die Eigenschaften abzurufen, die angezeigt werden sollen. Wenn die Methode für ein Objekt nicht definiert ist, werden alle öffentlichen, geschützten und privaten Eigenschaften angezeigt.
prop = $ val} öffentliche Funktion __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (neues Beispiel (22))?>

Damit sind wir am Ende dieser magischen Methode im PHP-Artikel angelangt. Ich hoffe, Sie haben eine Vorstellung von den verschiedenen magischen Methoden in PHP.

Besuche die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt.

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren von ” Magische Methoden in PHP Und ich werde mich bei Ihnen melden.