Hva er magiske metoder i PHP? og hvordan implementere dem?



Denne artikkelen vil gi deg detaljert og omfattende kunnskap om de forskjellige magiske metodene i PHP med eksempler.

I , spesielle funksjoner kan defineres på en slik måte at de kan kalles automatisk og ikke krever noe funksjonsanrop for å utføre koden i disse funksjonene. Denne funksjonen er tilgjengelig i en spesiell metode kjent som magiske metoder. I denne artikkelen vil vi diskutere de beste magiske metodene i PHP.

Hva er Magic Methods i PHP?

Metoder som begynner med to understrekninger (__) kalles vanligvis Magic-metoder i PHP. Disse metodene navn er begrenset til noen liste over PHP støttede nøkkelord som er reservert. Så enhver funksjon skal ikke defineres med navnet på magiske PHP-metoder.





Magic-Methods-in-PHP

Vanligvis bør disse funksjonene defineres av brukeren, og det er ikke nødvendig å ringe dem eksplisitt.



hvordan du bruker python anaconda

Liste over magiske metoder i PHP

  • __construct ()
  • __destruct ()
  • __call ($ moro, $ arg)
  • __callStatic ($ moro, $ arg)
  • __get ($ eiendom)
  • __set ($ eiendom, $ verdi)
  • __isset ($ innhold)
  • __unset ($ innhold)
  • __sove()
  • __Våkn opp()
  • __toString ()
  • __invoke ()
  • __set_state ($ array)
  • __clone ()
  • __Feilsøkingsinformasjon()
  • __construct (): Det er en metode som blir ringt automatisk etter opprettelsen av et objekt. Hvilket som helst antall argumenter kan defineres her som sendes når objekter opprettes.
klasseeksempel {funksjon user_def () {echo 'brukerdefinert konstruktør'} funksjon __construct () {echo 'forhåndsdefinert konstruktør'}} $ obj = ny prøve ()?>

  • __destruct (): Destructor er et vanlig trekk ved det objektorienterte språket som blir utløst så snart det ikke er andre referanser til et bestemt objekt.
user_def () // sjekk objektet er ødelagt eller ikke ekko is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Denne metoden kalles når en udefinert eller utilgjengelig metode kalles. Hvilket betyr at det kalles når en udefinert eller utilgjengelig metode påkalles på et objekt.
run ('lærer') // Hvis metoden som ikke eksisterer, blir kalt i objektet, vil metoden __call () kalles automatisk. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Denne metoden kalles når en udefinert eller utilgjengelig metode påberopes på en statisk måte.
user_define ()?>

  • __get ($ eiendom): Denne metoden brukes for å få verdier for klasseegenskaper opprettet dynamisk av overbelastning av PHP-eiendom.
name = $ name $ this-> reg = $ reg} public function __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} annet {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Instantiser objektet med studentklassen og tildel startverdier til eiendommene med konstruktøren. ekko 'Navn :'. $ obj-> navn. '' // Når den private eiendommen er tilgjengelig, vil metoden __get () kalles automatisk, slik at vi kan få eiendomsverdien indirekte. ekko 'reg :'. $ obj-> reg. '' // Metoden __get () kalles automatisk , og den returnerer forskjellige verdier i henhold til selve objektet. ?>

  • __set ($ eiendom, $ verdi): Denne metoden brukes for å sette verdier for klasseegenskaper opprettet dynamisk av PHP-overbelastning.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My navn er '. $ this-> name.', Mitt registreringsnummer er '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Merk at den opprinnelige verdien endres av koden under. $ obj-> name = 'Sushma' // Egenskapen 'name' vil bli tildelt. Hvis det ikke er noen __set () -metode, vil programmet kaste et unntak. $ obj-> age = 16 // Egenskapen 'reg' vil bli tildelt. $ obj-> reg = 160 // 160 er en ugyldig verdi, så den tildeles ikke. $ obj-> moro ()?>

  • __isset ($ innhold); Denne metoden vil bli kalt mens du ringer til isset () eller tom () for et udefinert eller utilgjengelig medlem. Det påkalles automatisk mens du sjekker om en nødvendig overbelastet eiendom er angitt eller ikke, ved hjelp av PHP isset () -funksjonen.
navn = $ navn $ dette-> reg = $ reg $ dette-> kjønn = $ kjønn} offentlig funksjon __isset ($ innhold) {echo 'Egenskapen {$ content} er privat , metoden __isset () kalles automatisk. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Opprinnelig tildelt. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ innhold): Denne metoden vil bli kalt mens du ringer reset () for et udefinert eller utilgjengelig medlem.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Det kalles automatisk når vi bruker metoden unset () utenfor klassen. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Opprinnelig tildelt. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __sove(): Denne metoden kalles først mens du kjører serialize (). Den returnerer objektets eiendomsmatrise ved rengjøring av PHP-klasseobjekter før serialisering.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Det kalles når metoden serialize () kalles utenfor klassen. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Den må returnere en verdi som elementene er navnet på egenskapene som returneres. }} $ obj = new Student ('Ashok') // Opprinnelig tildelt. echo serialize ($ obj) echo ''?>

  • __Våkn opp(): Denne metoden kalles mens deserialisering () utføres. Det ville reversere arbeidet med å gjenopprette objektegenskaper og ressurser ved å påberope deserialisering ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Det kalles når metoden serialize () kalles utenfor klassen. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Den må returnere en verdi som elementene er navnet på egenskapene som returneres. } offentlig funksjon __wakeup () {echo 'Det kalles når unserialize () -metoden kalles utenfor klassen. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Opprinnelig tildelt. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Denne metoden vil bli kalt mens du bruker ekko-metoden for å skrive ut et objekt direkte. Det forventes å returnere en strengverdi mens du bruker klasseinstanser med PHP-utskriftsuttalelser.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} offentlig funksjon __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Opprinnelig tildelt. ekko $ obj?>

  • __invoke (): Denne metoden er definert i en klasse som skal kalles mens du prøver å ringe et objekt på en måte å ringe funksjon.
navn = $ navn $ dette-> reg = $ reg $ dette-> kjønn = $ kjønn} offentlig funksjon __invoke () {echo 'Dette er et objekt'}} $ obj = ny student ('Ashok') // Opprinnelig tildelt . $ obj ()?>

  • __set_state ($ array): Denne metoden kalles mens du ringer til var_export (). Det er en statisk metode påkalt mens du eksporterer objektegenskapegruppe og forventer en slik variabel som argument.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Opprinnelig tildelt. var_export ($ obj)?>

  • __clone (): Denne metoden kalles når objektet kopieres.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'du kloner objektet. '}} $ obj = new Student (' Ashok ') // Opprinnelig tildelt. $ obj2 = klone $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __Feilsøkingsinformasjon(): Denne metoden kalles var_dump () mens du dumper et objekt for å få egenskapene som skal vises. Hvis metoden ikke er definert på et objekt, vises alle offentlige, beskyttede og private eiendommer.
prop = $ val} offentlig funksjon __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (ny prøve (22))?>

Med dette kommer vi til slutten av denne magiske metoden i PHP-artikkelen. Jeg håper du fikk en ide om de forskjellige magiske metodene i PHP.

Sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet til ” Magiske metoder i PHP ”Og jeg kommer tilbake til deg.