Hvad er magiske metoder i PHP? og hvordan implementeres dem?



Denne artikel giver dig en detaljeret og omfattende viden om de forskellige Magic-metoder i PHP med eksempler.

I , kan specialfunktioner defineres på en sådan måde, at de kan kaldes automatisk og ikke kræver noget funktionsopkald for at udføre koden inde i disse funktioner. Denne funktion er tilgængelig i en speciel metode kendt som magiske metoder. I denne artikel vil vi diskutere de mest magiske metoder i PHP.

hvad er forskellen mellem javascript og jquery

Hvad er magiske metoder i PHP?

Metoder, der begynder med 2 understregninger (__) kaldes generelt Magic-metoder i PHP. Disse metoders navne er begrænset til en liste over PHP understøttede nøgleord, der er reserveret. Så enhver funktion skal ikke defineres med navnet på magiske PHP-metoder.





Magic-Methods-in-PHP

Normalt skal disse funktioner defineres af brugeren, og det er ikke nødvendigt at kalde dem eksplicit.



Liste over magiske metoder i PHP

  • __konstruere()
  • __destruct ()
  • __call ($ sjovt, $ arg)
  • __callStatic ($ sjovt, $ arg)
  • __get ($ ejendom)
  • __set ($ ejendom, $ værdi)
  • __isset ($ indhold)
  • __unset ($ indhold)
  • __søvn()
  • __Vågn op()
  • __toString ()
  • __invoke ()
  • __set_state ($ array)
  • __klon ()
  • __debugInfo ()
  • __konstruere(): Det er en metode, der kaldes automatisk efter oprettelsen af ​​et objekt. Ethvert antal argumenter kan defineres her, der sendes, når objekter oprettes.
klasseeksempel {funktion user_def () {echo 'brugerdefineret konstruktør'} funktion __construct () {echo 'foruddefineret konstruktør'}} $ obj = ny prøve ()?>

  • __destruct (): Destructor er et fælles træk ved det objektorienterede sprog, der udløses, så snart der ikke er andre referencer til et bestemt objekt.
user_def () // check-objekt er ødelagt eller ikke echo is_object ($ obj). ' '?>

  • __call ($ sjovt, $ arg): Denne metode kaldes, når der kaldes en udefineret eller utilgængelig metode. Hvilket betyder, at det kaldes, når en udefineret eller utilgængelig metode påberåbes på et objekt.
run ('lærer') // Hvis metoden, som ikke findes, kaldes inden for objektet, kaldes metoden __call () automatisk. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ sjov, $ arg): Denne metode kaldes, når en udefineret eller utilgængelig metode påberåbes på en statisk måde.
bruger_definer ()?>

  • __get ($ ejendom): Denne metode bruges til at hente værdier for klasseegenskaber, der er oprettet dynamisk ved overbelastning af PHP-egenskaber.
name = $ name $ this-> reg = $ reg} public function __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} andet {return $ this -> $ propertyName}} else {return $ this -> $ propertyName}}} $ obj = new Student ('Ashok', 60) // Instantier objektet med Student-klassen og tildel startværdier til egenskaberne med konstruktøren. ekko 'Navn :'. $ obj-> navn. '' // Når der er adgang til den private ejendom, kaldes metoden __get () automatisk, så vi kan få ejendomsværdien indirekte. ekko 'reg :'. $ obj-> reg. '' // Metoden __get () kaldes automatisk , og den returnerer forskellige værdier i henhold til selve objektet. ?>

  • __set ($ ejendom, $ værdi): Denne metode bruges til at sætte værdier for klasseegenskaber, der oprettes dynamisk ved overbelastning af PHP-egenskaber.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My navn er '. $ dette-> navn.', mit registreringsnummer er '. $ dette-> reg}} $ obj = ny studerende (' Ashok ', 40) // Bemærk, at den oprindelige værdi ændres af koden under. $ obj-> name = 'Sushma' // Egenskaben 'navn' tildeles med succes. Hvis der ikke er nogen __set () -metode, kaster programmet en undtagelse. $ obj-> age = 16 // Egenskaben 'reg' tildeles med succes. $ obj-> reg = 160 // 160 er en ugyldig værdi, så den tildeles ikke. $ obj-> sjov ()?>

  • __isset ($ indhold); Denne metode kaldes, mens der kaldes isset () eller tom () til et udefineret eller utilgængeligt medlem. Det påkaldes automatisk, mens du kontrollerer, om en påkrævet overbelastet ejendom er indstillet eller ej, ved hjælp af funktionen PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} offentlig funktion __isset ($ content) {echo 'Egenskaben {$ content} er privat , metoden __isset () kaldes automatisk. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Oprindeligt tildelt. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ indhold): Denne metode kaldes, når du kalder reset () til et udefineret eller utilgængeligt medlem.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} offentlig funktion __unset ($ content) {echo 'Det kaldes automatisk, når vi bruger metoden unset () uden for klassen. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Oprindeligt tildelt. frakoblet ($ obj-> køn) frakoblet ($ obj-> navn) frakoblet ($ obj-> reg)?>

hvad er forskellen mellem c ++ og java
  • __søvn(): Denne metode kaldes først under udførelse af serialisering (). Det returnerer objektets egenskabsarray ved rengøring af PHP-klasseobjekter inden serialisering.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} offentlig funktion __sleep () {echo 'Det kaldes, når metoden serialize () kaldes uden for klassen. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Det skal returnere en værdi, hvor elementerne er navnet på de returnerede egenskaber. }} $ obj = ny elev ('Ashok') // Oprindeligt tildelt. echo serialize ($ obj) echo ''?>

  • __Vågn op(): Denne metode kaldes, mens deserialisering () udføres. Det ville vende arbejde for at gendanne objektegenskaber og ressourcer ved påberåbelse af deserialisering ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} offentlig funktion __sleep () {echo 'Det kaldes, når metoden serialize () kaldes uden for klassen. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Det skal returnere en værdi, hvor elementerne er navnet på de returnerede egenskaber. } offentlig funktion __wakeup () {echo 'Det kaldes, når metoden unserialize () kaldes uden for klassen. '$ this-> name = 2 $ this-> gender =' Mand '}} $ obj = ny elev (' Ashok ') // Oprindeligt tildelt. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Denne metode kaldes, mens du bruger ekko-metoden til at udskrive et objekt direkte. Det forventes at returnere en strengværdi, mens du bruger klasseinstanser med PHP-udskrivningsudsagn.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Oprindeligt tildelt. echo $ obj?>

  • __invoke (): Denne metode er defineret i en klasse, der kaldes, mens du prøver at kalde et objekt på en måde, der kalder funktion.
navn = $ navn $ dette-> reg = $ reg $ dette-> køn = $ køn} offentlig funktion __invoke () {echo 'Dette er et objekt'}} $ obj = ny elev ('Ashok') // Oprindeligt tildelt . $ obj ()?>

  • __set_state ($ array): Denne metode kaldes mens du kalder på var_export (). Det er en statisk metode, der påberåbes under eksportering af objektegenskabsarray og forventer en sådan arrayvariabel som dens argument.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Oprindeligt tildelt. var_export ($ obj)?>

  • __klon (): Denne metode kaldes, når objektet kopieres.
navn = $ navn $ dette-> reg = $ reg $ dette-> køn = $ køn} offentlig funktion __clone () {echo __METHOD __. 'du kloner objektet. '}} $ obj = ny elev (' Ashok ') // Oprindeligt tildelt. $ obj2 = klon $ obj var_dump ('object1:') var_dump ($ obj) ekko '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Denne metode kaldes af var_dump (), mens du dumper et objekt for at få de egenskaber, der skal vises. Hvis metoden ikke er defineret på et objekt, vises alle offentlige, beskyttede og private ejendomme.
prop = $ val} offentlig funktion __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (ny prøve (22))?>

Med dette kommer vi til slutningen af ​​denne magiske metode i PHP-artiklen. Jeg håber, du har en idé om de forskellige magiske metoder i PHP.

Tjek af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden.

hvad er binær søgning i java

Har du et spørgsmål til os? Nævn det i kommentarfeltet i ” Magiske metoder i PHP ”Og jeg vender tilbage til dig.