Ce sunt metodele magice în PHP? și Cum să le implementăm?



Acest articol vă va oferi o cunoaștere detaliată și cuprinzătoare a diferitelor metode magice în PHP cu exemple.

În , funcțiile speciale pot fi definite în așa fel încât să poată fi apelate automat și să nu necesite niciun apel de funcție pentru a executa codul din aceste funcții. Această caracteristică este disponibilă într-o metodă specială cunoscută sub numele de metode magice. În acest articol, vom discuta despre metodele magice de top din PHP.

Ce sunt metodele magice în PHP?

Metodele care încep cu 2 puncte de subliniere (__) sunt denumite în general metode Magic în PHP. Numele acestor metode sunt limitate la o listă de PHP cuvinte cheie acceptate care sunt rezervate. Deci, orice funcție nu ar trebui definită cu numele metodelor magice PHP.





Magic-Methods-in-PHP

De obicei, aceste funcții ar trebui definite de utilizator și nu este nevoie să le apelați în mod explicit.



Lista metodelor magice în PHP

  • __construi()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ proprietate)
  • __set ($ proprietate, $ valoare)
  • __set ($ content)
  • __unset ($ content)
  • __dormi()
  • __trezește-te()
  • __toString ()
  • __invoca()
  • __set_state ($ array)
  • __clona ()
  • __debugInfo ()
  • __construi(): Este o metodă care este apelată automat după crearea unui obiect. Aici poate fi definit orice număr de argumente care vor fi transmise atunci când sunt create obiecte.
clasă eșantion {funcție user_def () {echo 'constructor definit de utilizator'} funcție __construct () {echo 'constructor predefinit'}} $ obj = new sample ()?>

  • __destruct (): Destructorul este o caracteristică comună a limbajului orientat pe obiect care se declanșează de îndată ce nu există alte referințe la un anumit obiect.
user_def () // verifică obiectul este distrus sau nu echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Această metodă se numește atunci când se apelează o metodă nedefinită sau inaccesibilă. Ceea ce înseamnă că este apelat atunci când o metodă nedefinită sau inaccesibilă este invocată asupra unui obiect.
run ('profesor') // Dacă metoda care nu există este apelată în cadrul obiectului, atunci metoda __call () va fi apelată automat. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Această metodă se numește atunci când o metodă nedefinită sau inaccesibilă este invocată într-un mod static.
user_define ()?>

în python se folosește metoda __init__ a unei clase
  • __get ($ proprietate): Această metodă este utilizată pentru obținerea valorilor pentru proprietățile clasei create dinamic prin supraîncărcarea proprietăților PHP.
nume = $ nume $ this-> reg = $ reg} funcție publică __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} else {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Instantați obiectul cu clasa Student și atribuiți valorile inițiale la proprietățile cu constructorul. ecou „Nume :”. $ obj-> nume. '' // Când proprietatea privată este accesată, metoda __get () va fi apelată automat, astfel încât să putem obține valoarea proprietății în mod indirect. ecou 'reg :'. $ obj-> reg. '' // Metoda __get () se numește automat , și returnează valori diferite în funcție de obiectul însuși. ?>

  • __set ($ proprietate, $ valoare): Această metodă este utilizată pentru plasarea valorilor pentru proprietățile clasei create dinamic prin supraîncărcarea proprietăților PHP.
nume = $ nume $ acest-> reg = $ reg} funcție publică __set ($ proprietate, $ valoare) {if ($ proprietate == 'reg') $ valoare $ proprietate = $ valoare funcție publică fun () {echo 'My numele este '. $ this-> name.', numărul meu de înregistrare este '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Rețineți că valoarea inițială va fi modificată de cod de mai jos. $ obj-> name = 'Sushma' // Proprietatea 'name' va fi atribuită cu succes. Dacă nu există o metodă __set (), atunci programul va arunca o excepție. $ obj-> age = 16 // Proprietatea „reg” va fi atribuită cu succes. $ obj-> reg = 160 // 160 este o valoare nevalidă, deci nu este atribuită. $ obj-> fun ()?>

  • __set ($ content); Această metodă va fi apelată în timp ce apelați isset () sau goală () pentru un membru nedefinit sau inaccesibil. Este invocat automat în timp ce se verifică dacă este setată sau nu o proprietate necesară supraîncărcată, utilizând funcția PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} funcție publică __isset ($ content) {echo 'Proprietatea {$ content} este privată , metoda __isset () este apelată automat. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Atribuit inițial. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ content): Această metodă va fi apelată în timp ce se apelează reset () pentru un membru nedefinit sau inaccesibil.
nume = $ nume $ this-> reg = $ reg $ this-> gender = $ gender} funcție publică __unset ($ content) {echo 'Se apelează automat când folosim metoda unset () în afara clasei. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Atribuit inițial. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __dormi(): Această metodă este numită mai întâi în timpul executării serialize (). Returnează matricea de proprietăți a obiectului la curățarea obiectelor din clasa PHP înainte de serializare.
nume = $ nume $ this-> reg = $ reg $ this-> gender = $ gender} funcție publică __sleep () {echo 'Se numește atunci când metoda serialize () este apelată în afara clasei. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Trebuie să returneze o valoare a cărei elemente sunt numele proprietăților returnate. }} $ obj = student nou („Ashok”) // Atribuit inițial. echo serializează ($ obj) echo ''?>

  • __trezește-te(): Această metodă este apelată în timp ce se execută deserializarea (). Ar inversa activitatea pentru a restabili proprietățile și resursele obiectelor la invocarea deserializării ().
nume = $ nume $ this-> reg = $ reg $ this-> gender = $ gender} funcție publică __sleep () {echo 'Se numește atunci când metoda serialize () este apelată în afara clasei. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Trebuie să returneze o valoare a cărei elemente sunt numele proprietăților returnate. } funcție publică __wakeup () {echo 'Se numește atunci când metoda unserialize () este apelată în afara clasei. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Inițial atribuit. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Această metodă va fi apelată în timp ce se utilizează metoda ecou pentru a imprima direct un obiect. Se așteaptă să returneze o valoare șir în timp ce se utilizează instanțele de clasă cu instrucțiuni de imprimare PHP.
nume = $ nume $ this-> reg = $ reg $ this-> gender = $ gender} funcție publică __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Atribuit inițial. echo $ obj?>

  • __invoca(): Această metodă este definită într-o clasă care va fi apelată în timp ce încercați să apelați un obiect într-un mod de apelare a funcției.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} funcție publică __invoke () {echo 'Acesta este un obiect'}} $ obj = new Student ('Ashok') // Atribuit inițial . $ obj ()?>

  • __set_state ($ array): Această metodă este apelată în timp ce se apelează var_export (). Este o metodă statică invocată în timp ce exportă matricea de proprietăți a obiectelor și așteaptă o astfel de variabilă de matrice ca argument.
nume = $ nume $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Inițial atribuit. var_export ($ obj)?>

  • __clone (): Această metodă se numește atunci când obiectul este copiat.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} funcție publică __clone () {echo __METHOD __. 'clonezi obiectul. '}} $ obj = student nou (' Ashok ') // Atribuit inițial. $ obj2 = clonează $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Această metodă este apelată de var_dump () în timp ce descărcați un obiect pentru a obține proprietățile care ar trebui să fie afișate. Dacă metoda nu este definită pe un obiect, atunci vor fi afișate toate proprietățile publice, protejate și private.
prop = $ val} funcție publică __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

Cu aceasta, ajungem la sfârșitul acestei metode magice în articolul PHP. Sper că ți-ai făcut o idee despre diferitele metode magice din PHP.

ce este o matrice dinamică

Verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii din ” Metode magice în PHP ”Și mă voi întoarce la tine.