Kas ir burvju metodes PHP? un kā tos īstenot?



Šis raksts sniegs jums detalizētas un visaptverošas zināšanas par dažādām burvju metodēm PHP ar piemēriem.

In , īpašās funkcijas var definēt tādā veidā, ka tās var izsaukt automātiski un tām nav nepieciešams neviens funkciju izsaukums, lai izpildītu kodu šajās funkcijās. Šī funkcija ir pieejama īpašā metodē, kas pazīstama kā burvju metodes. Šajā rakstā mēs apspriedīsim galvenās burvju metodes PHP.

Kas ir burvju metodes PHP?

Metodes, kas sākas ar 2 pasvītrām (__), PHP parasti sauc par burvju metodēm. Šo metožu nosaukumi ir ierobežoti ar dažiem PHP atbalstītie atslēgvārdi, kas ir rezervēti. Tātad nevienu funkciju nevajadzētu definēt ar PHP burvju metožu nosaukumu.





Magic-Methods-in-PHP

Parasti šīs funkcijas jādefinē lietotājam, un nav nepieciešams tās skaidri izsaukt.



Burvju metožu saraksts PHP

  • __construct ()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ īpašums)
  • __set ($ īpašums, $ value)
  • __isset ($ content)
  • __unset ($ content)
  • __Gulēt()
  • __Celies()
  • __toString ()
  • __invoke ()
  • __set_state ($ masīvs)
  • __klons ()
  • __debugInfo ()
  • __construct (): Tā ir metode, kuru automātiski izsauc pēc objekta izveides. Šeit var definēt jebkuru argumentu skaitu, kas tiks nodots, kad tiks izveidoti objekti.
klases paraugs {funkcija user_def () {echo 'lietotāja definēts konstruktors'} funkcija __construct () {echo 'iepriekš definēts konstruktors'}} $ obj = jauns paraugs ()?>

  • __destruct (): Iznīcinātājs ir objektorientētās valodas kopīga iezīme, kas tiek aktivizēta, tiklīdz nav citu atsauču uz konkrētu objektu.
user_def () // pārbaudes objekts ir iznīcināts vai nav atbalss is_object ($ obj). ' '?>

kā ieviest kaudzi
  • __call ($ fun, $ arg): Šo metodi sauc, ja tiek saukta nedefinēta vai nepieejama metode. Tas nozīmē, ka tas tiek izsaukts, ja objektam tiek izmantota nedefinēta vai nepieejama metode.
run ('skolotājs') // Ja objektā tiek izsaukta neeksistējoša metode, tad metode __call () tiks izsaukta automātiski. $ obj-> ēst ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Šo metodi sauc, ja statiski tiek izsaukta nedefinēta vai nepieejama metode.
user_define ()?>

java cast stīgu līdz šim
  • __get ($ īpašums): Šo metodi izmanto, lai iegūtu vērtības klases īpašībām, kuras dinamiski izveido PHP rekvizītu pārslodze.
name = $ name $ this-> reg = $ reg} public function __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) // Instantējiet objektu ar klases Student un piešķiriet sākotnējās vērtības uz īpašībām ar konstruktoru. atbalss 'Vārds :'. $ obj-> nosaukums. '' // Kad būs pieejams privātais īpašums, metode __get () tiks izsaukta automātiski, lai īpašuma vērtību varētu iegūt netieši. atbalss 'reg :'. $ obj-> reģ. '' // Metode __get () tiek izsaukta automātiski ,, un tā atgriež dažādas vērtības atbilstoši pašam objektam. ?>

  • __set (īpašums $, $ vērtība): Šo metodi izmanto, lai ievietotu vērtības klases īpašībām, kuras dinamiski izveido PHP rekvizītu pārslodze.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {atbalss 'Mana nosaukums ir '. $ this-> name.', Mans reģistrācijas numurs ir '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Ņemiet vērā, ka sākotnējo vērtību mainīs kods zemāk. $ obj-> name = 'Sushma' // Īpašums 'name' tiks veiksmīgi piešķirts. Ja nav __set () metodes, tad programma radīs izņēmumu. $ obj-> age = 16 // Rekvizīts 'reg' tiks veiksmīgi piešķirts. $ obj-> reg = 160 // 160 ir nederīga vērtība, tāpēc to nevar piešķirt. $ obj-> fun ()?>

  • __isset ($ saturs); Šī metode tiks izsaukta, izsaucot nenoteiktam vai nepieejamam dalībniekam isset () vai tukšu (). Tas tiek izsaukts automātiski, pārbaudot, vai ir iestatīts nepieciešamais pārslogots rekvizīts, izmantojot PHP isset () funkciju.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'Īpašums {$ content} ir privāts. Metode __isset () tiek izsaukta automātiski. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Sākotnēji piešķirts. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), 'echo isset ($ obj-> reg),' '?>

  • __unset ($ content): Šī metode tiks izsaukta, izsaucot reset () nenoteiktam vai nepieejamam dalībniekam.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'To sauc automātiski, kad mēs izmantojam metodi unset () ārpus klases. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Sākotnēji piešķirts. atiestatīt ($ obj-> dzimums) atiestatīt ($ obj-> nosaukums) atiestatīt ($ obj-> reg)?>

  • __Gulēt(): Šo metodi vispirms sauc par serializācijas () izpildi. Tas atgriež objekta rekvizītu masīvu PHP klases objektu tīrīšanai pirms sērijas.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'To sauc, kad metodi serialize () izsauc ārpus klases. '$ this-> name = base64_encode ($ this-> name) return masīvs (' name ',' reg ') // Tam jāatgriež vērtība, kuras elementi ir atgriezto rekvizītu nosaukums. }} $ obj = new Student ('Ashok') // Sākotnēji piešķirts. echo serialize ($ obj) echo ''?>

  • __Celies(): Šo metodi sauc, kamēr tiek veikta deserializācija (). Tas mainītu darbu, lai atjaunotu objektu īpašības un resursus, atsaucoties uz deserializāciju ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'To sauc, kad metodi serialize () izsauc ārpus klases. '$ this-> name = base64_encode ($ this-> name) return masīvs (' name ',' reg ') // Tam jāatgriež vērtība, kuras elementi ir atgriezto rekvizītu nosaukums. } public function __wakeup () {echo 'To izsauc, kad metode unserialize () tiek izsaukta ārpus klases. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Sākotnēji piešķirts. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Šī metode tiks izsaukta, vienlaikus izmantojot atbalss metodi objekta tiešai drukāšanai. Paredzams, ka tā atgriezīs virknes vērtību, vienlaikus izmantojot klases gadījumus ar PHP drukāšanas paziņojumiem.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Sākotnēji piešķirts. echo $ obj?>

  • __invoke (): Šī metode ir definēta klasē, kas tiks izsaukta, mēģinot izsaukt objektu tādā veidā, lai izsauktu funkciju.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'Šis ir objekts'}} $ obj = new Student ('Ashok') // Sākotnēji piešķirts . $ obj ()?>

  • __set_state ($ masīvs): Šo metodi sauc, izsaucot var_export (). Tā ir statiska metode, kas tiek izsaukta, eksportējot objektu īpašumu masīvu, un sagaida šādu masīva mainīgo kā tā argumentu.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Sākotnēji piešķirts. var_export ($ obj)?>

  • __klons (): Šo metodi sauc, kad objekts tiek kopēts.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'jūs klonējat objektu. '}} $ obj = new Student (' Ashok ') // Sākotnēji piešķirts. $ obj2 = klons $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

def __init __ (pats) pitons
  • __debugInfo (): Šo metodi izsauc var_dump (), vienlaikus izgāžot objektu, lai iegūtu īpašības, kuras būtu jāparāda. Ja objektam metode nav definēta, tiks parādīti visi publiskie, aizsargātie un privātie īpašumi.
prop = $ val} public function __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (jauns paraugs (22))?>

Ar to mēs esam nonākuši līdz šīs burvju metodes beigām PHP rakstā. Es ceru, ka jums ir ideja par dažādām burvju metodēm PHP.

Pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā Burvju metodes PHP ”Un es sazināšos ar jums.