Vad är magiska metoder i PHP? och hur man implementerar dem?



Den här artikeln ger dig en detaljerad och omfattande kunskap om de olika magiska metoderna i PHP med exempel.

I , specialfunktioner kan definieras på ett sådant sätt att de kan anropas automatiskt och inte kräver något funktionssamtal för att köra koden inuti dessa funktioner. Denna funktion finns i en speciell metod som kallas magiska metoder. I den här artikeln kommer vi att diskutera de bästa magiska metoderna i PHP.

Vad är magiska metoder i PHP?

Metoder som börjar med två understrykningar (__) kallas vanligtvis Magic-metoder i PHP. Dessa metodnamn är begränsade till någon lista över PHP stödda nyckelord som är reserverade. Så vilken funktion som helst bör inte definieras med namnet på magiska PHP-metoder.





Magic-Methods-in-PHP

skillnad mellan grunt och djupt i Java

Vanligtvis bör dessa funktioner definieras av användaren och det finns inget behov av att anropa dem uttryckligen.



Lista över magiska metoder i PHP

  • __konstruera()
  • __destruera()
  • __call ($ kul, $ arg)
  • __callStatic ($ kul, $ arg)
  • __get ($ fastighet)
  • __set ($ fastighet, $ värde)
  • __isset ($ innehåll)
  • __unset ($ innehåll)
  • __sömn()
  • __vakna()
  • __att stränga()
  • __åberopa()
  • __set_state ($ array)
  • __klona()
  • __Felsöknings information()
  • __konstruera(): Det är en metod som kallas automatiskt efter skapandet av ett objekt. Vilket antal argument som helst kan definieras här som skickas när objekt skapas.
klassexempel {funktion user_def () {echo 'användardefinierad konstruktör'} funktion __construct () {echo 'fördefinierad konstruktör'}} $ obj = nytt exempel ()?>

  • __destruera(): Destructor är ett vanligt inslag i det objektorienterade språket som utlöses så snart det inte finns några andra referenser till ett visst objekt.
user_def () // check-objekt förstörs eller inte echo is_object ($ obj). ' '?>

  • __call ($ kul, $ arg): Denna metod kallas när en odefinierad eller otillgänglig metod anropas. Vilket betyder att det kallas när en odefinierad eller otillgänglig metod åberopas på ett objekt.
run ('lärare') // Om metoden som inte finns anropas inom objektet kommer metoden __call () att anropas automatiskt. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ kul, $ arg): Denna metod kallas när en odefinierad eller otillgänglig metod åberopas på ett statiskt sätt.
user_define ()?>

  • __get ($ fastighet): Den här metoden används för att få värden för klassegenskaper skapade dynamiskt av överbelastning av PHP-egendom.
name = $ name $ this-> reg = $ reg} public function __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} annat {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Instantiera objektet med studentklassen och tilldela initialvärden till fastigheterna med konstruktören. eko 'Namn :'. $ obj-> namn. '' // När den privata egenskapen nås kommer metoden __get () att anropas automatiskt, så att vi kan få fastighetsvärdet indirekt. eko 'reg :'. $ objekt-> reg. '' // Metoden __get () anropas automatiskt , och den returnerar olika värden beroende på själva objektet. ?>

  • __set ($ egendom, $ värde): Den här metoden används för att sätta värden för klassegenskaper skapade dynamiskt av överbelastning av PHP-egendom.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My namn är '. $ this-> name.', Mitt registreringsnummer är '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Observera att det ursprungliga värdet ändras av koden Nedan. $ obj-> name = 'Sushma' // Egenskapen 'name' kommer att tilldelas framgångsrikt. Om det inte finns någon __set () -metod kommer programmet att göra ett undantag. $ obj-> age = 16 // Egenskapen 'reg' kommer att tilldelas framgångsrikt. $ obj-> reg = 160 // 160 är ett ogiltigt värde, så det kan inte tilldelas. $ obj-> kul ()?>

  • __isset ($ innehåll); Denna metod kommer att anropas när du ringer till isset () eller tom () för en odefinierad eller otillgänglig medlem. Det anropas automatiskt när du kontrollerar om en nödvändig överbelastad egenskap är inställd eller inte, med hjälp av funktionen PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'Egenskapen {$ content} är privat method metoden __isset () anropas automatiskt. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Tilldelades ursprungligen. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ innehåll): Denna metod kommer att anropas när du ringer reset () för en odefinierad eller otillgänglig medlem.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Det kallas automatiskt när vi använder metoden unset () utanför klassen. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Tilldelades ursprungligen. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __sömn(): Den här metoden kallas först vid körning av serialize (). Det returnerar objektets fastighetsmatris vid rengöring av PHP-klassobjekt före serialisering.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Det kallas när metoden serialize () kallas utanför klassen. '$ this-> name = base64_encode ($ this-> name) returmatris (' name ',' reg ') // Den måste returnera ett värde som elementen är namnet på de returnerade egenskaperna. }} $ obj = ny student ('Ashok') // Tilldelades ursprungligen. echo serialize ($ obj) echo ''?>

  • __vakna(): Denna metod kallas medan deserialisering () körs. Det skulle vända arbetet med att återställa objektegenskaper och resurser vid åberopande deserialisering ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Det kallas när metoden serialize () kallas utanför klassen. '$ this-> name = base64_encode ($ this-> name) returmatris (' name ',' reg ') // Den måste returnera ett värde som elementen är namnet på de returnerade egenskaperna. } offentlig funktion __wakeup () {echo 'Det kallas när unserialize () -metoden anropas utanför klassen. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Ursprungligen tilldelad. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __att stränga(): Denna metod kommer att anropas när du använder echo-metoden för att skriva ut ett objekt direkt. Det förväntas returnera ett strängvärde när du använder klassinstanser med PHP-utskriftsuttalanden.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Ursprungligen tilldelad. echo $ obj?>

  • __åberopa(): Denna metod definieras i en klass som kommer att anropas när man försöker ringa ett objekt på ett sätt att ringa funktion.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'This is an object'}} $ obj = new Student ('Ashok') // Ursprungligen tilldelad . $ obj ()?>

  • __set_state ($ array): Denna metod kallas när du anropar var_export (). Det är en statisk metod som åberopas när du exporterar objektegenskapsarray och förväntar sig en sådan arrayvariabel som dess argument.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Ursprungligen tilldelad. var_export ($ obj)?>

  • __klona(): Denna metod kallas när objektet kopieras.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'du klonar objektet. '}} $ obj = ny student (' Ashok ') // Tilldelades ursprungligen. $ obj2 = klon $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __Felsöknings information(): Denna metod kallas av var_dump () medan du dumpar ett objekt för att få de egenskaper som ska visas. Om metoden inte definieras för ett objekt visas alla offentliga, skyddade och privata egenskaper.
prop = $ val} offentlig funktion __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (nytt prov (22))?>

Med detta kommer vi till slutet av denna magiska metod i PHP-artikeln. Jag hoppas att du fick en uppfattning om de olika magiska metoderna i PHP.

Kolla in av Edureka, ett pålitligt online-lärande företag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen.

matrixmultiplikationsprogram i java

Har du en fråga till oss? Vänligen nämna det i kommentarfältet i ” Magiska metoder i PHP ”Och jag kommer tillbaka till dig.