Ano ang mga pamamaraan ng mahika sa PHP? at Paano Ipatupad ang mga ito?



Magbibigay sa iyo ang artikulong ito ng isang detalyado at komprehensibong kaalaman sa iba't ibang Mga Paraan ng Magic sa PHP na may Mga Halimbawa.

Sa , ang mga espesyal na pag-andar ay maaaring matukoy sa isang paraan na maaari silang tawaging awtomatiko at hindi nangangailangan ng anumang tawag sa pagpapaandar upang maipatupad ang code sa loob ng mga pagpapaandar na ito. Ang tampok na ito ay magagamit sa isang espesyal na pamamaraan na kilala bilang mga pamamaraan ng mahika. Sa artikulong ito, tatalakayin namin ang nangungunang Mga Paraan ng Magic sa PHP.

Ano ang Mga Paraan ng Magic sa PHP?

Ang mga pamamaraang nagsisimula sa 2 mga underscore (__) ay karaniwang tinatawag na mga pamamaraan ng Magic sa PHP. Ang mga pangalan ng pamamaraan na ito ay limitado sa ilang listahan ng PHP mga sinusuportahang keyword na nakalaan. Kaya't ang anumang pagpapaandar ay hindi dapat tukuyin sa pangalan ng mga pamamaraan ng mahika ng PHP.





Magic-Methods-in-PHP

Karaniwan, ang mga pagpapaandar na ito ay dapat na tinukoy ng gumagamit at hindi na kailangang tawagan sila nang tahasang.



Listahan ng Mga Paraan ng Magic sa PHP

  • __construct ()
  • __destruct ()
  • __call ($ masaya, $ arg)
  • __callStatic ($ masaya, $ arg)
  • __get ($ pag-aari)
  • __set ($ pag-aari, $ halaga)
  • __isset ($ nilalaman)
  • __unset ($ nilalaman)
  • __sulog ()
  • __gising na()
  • __toString ()
  • __invoke ()
  • __set_state ($ array)
  • __clone ()
  • __debugInfo ()
  • __construct (): Ito ay isang pamamaraan na awtomatikong tatawag pagkatapos ng paglikha ng isang bagay. Ang anumang bilang ng mga argumento ay maaaring tukuyin dito na ipapasa kapag nilikha ang mga bagay.
sample ng klase na {function ng user_def () {echo 'na tinukoy ng gumagamit na tagapagbuo'} function __construct () {echo 'predefined konstruktor'}} $ obj = bagong sample ()?>

  • __destruct (): Ang Destructor ay isang pangkaraniwang tampok ng wika na nakatuon sa object na na-trigger sa lalong madaling walang ibang mga sanggunian sa isang partikular na bagay.
user_def () // check object ay nawasak o hindi echo is_object ($ obj). ' '?>

  • __call ($ masaya, $ arg): Ang pamamaraang ito ay tinatawag kapag tinawag ang isang hindi natukoy o hindi ma-access na pamamaraan. Na nangangahulugang Tinatawag ito kapag ang isang hindi natukoy o hindi ma-access na pamamaraan ay tinawag sa isang bagay.
patakbuhin ('guro') // Kung ang pamamaraan na wala ay tinawag sa loob ng bagay, pagkatapos ang __call () na pamamaraan ay awtomatikong tatawagan. $ obj-> kumain ('ashok', 'orange') $ obj-> user_define ()?>



pagkakaiba sa pagitan ng hashmap at hashtable sa java
  • __callStatic ($ masaya, $ arg): Ang pamamaraang ito ay tinawag kapag ang isang hindi natukoy o hindi ma-access na pamamaraan ay tinawag sa isang static na paraan.
user_define ()?>

  • __get ($ pag-aari): Ginagamit ang pamamaraang ito para sa pagkuha ng mga halaga para sa mga pag-aari ng klase na nilikha nang pabago-bago ng sobrang pag-load ng ari-arian ng PHP.
name = $ name $ this-> reg = $ reg} pampublikong pagpapaandar __get ($ propertyName) {if ($ propertyName == 'reg') {if ($ this-> reg> 30) {return $ this-> reg - 10} iba pa {return $ this -> $ accommodationName}} iba pa {return $ this -> $ accommodationName}}} $ obj = bagong Student ('Ashok', 60) // I-install ang bagay sa klase ng Mag-aaral at magtalaga ng mga paunang halaga sa mga pag-aari na may tagabuo. echo 'Pangalan :'. $ obj-> pangalan. '' // Kapag na-access ang pribadong pag-aari, ang __get () na pamamaraan ay awtomatikong tatawagan, upang makuha natin ang halaga ng pag-aari nang hindi derekta. echo 'reg :'. $ obj-> reg. '' // Ang __get () na pamamaraan ay awtomatikong tinatawag na, at nagbabalik ito ng iba't ibang mga halaga ayon sa mismong object. ?>

  • __set ($ pag-aari, $ halaga): Ginagamit ang pamamaraang ito para sa paglalagay ng mga halaga para sa mga pag-aari ng klase na nilikha nang pabago-bago ng labis na pag-load ng ari-arian ng PHP.
name = $ name $ this-> reg = $ reg} pampublikong pagpapaandar __set ($ pag-aari, $ halaga) {kung ($ pag-aari == 'reg') $ halaga $ pag-aari = $ halaga kasiyahan sa pampublikong pag-andar () {echo 'My pangalan ay '. $ ito-> pangalan.', Ang aking numero sa pagpaparehistro ay '. $ ito-> reg}} $ obj = bagong Mag-aaral (' Ashok ', 40) // Tandaan na ang paunang halaga ay mababago ng code sa ibaba. $ obj-> name = 'Sushma' // Ang 'pangalan' na pag-aari ay matagumpay na maitalaga. Kung walang __set () na pamamaraan, kung gayon ang programa ay magtatapon ng isang pagbubukod. $ obj-> age = 16 // Ang 'reg' na pag-aari ay matagumpay na maitalaga. Ang $ obj-> reg = 160 // 160 ay isang hindi wastong halaga, kaya nabigo itong maitalaga. $ obj-> masaya ()?>

ay postgraduate na katulad ng masters
  • __isset ($ nilalaman); Tatawagan ang pamamaraang ito habang tumatawag sa nag-isyu () o walang laman () para sa isang hindi natukoy o hindi ma-access na miyembro. Awtomatiko itong naiimbitahan habang tinitingnan kung ang isang kinakailangang labis na karga na pag-aari ay nakatakda o hindi, sa pamamagitan ng paggamit ng pagpapaandar ng PHP (na) isyu ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'Ang pag-aari ng {$ content} ay pribado, ang __isset () na pamamaraan ay awtomatikong tinawag. 'echo isset ($ this -> $ content)}} $ obj = bagong Mag-aaral (' Ashok ', 30) // Paunang itinalaga. pag-isyu ng echo ($ obj-> kasarian), '' pag-isyu ng echo ($ obj-> pangalan), '' pag-isyu ng echo ($ obj-> reg), ''?>

  • __unset ($ nilalaman): Tatawagan ang pamamaraang ito habang tinatawagan ang pag-reset () para sa isang hindi natukoy o hindi maa-access na miyembro.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Awtomatiko itong tinatawag kapag ginamit namin ang unset () na pamamaraan sa labas ng klase. 'echo isset ($ this -> $ content)}} $ obj = bagong Mag-aaral (' Ashok ', 30) // Paunang itinalaga. i-unset ($ obj-> kasarian) i-unset ($ obj-> pangalan) i-unset ($ obj-> reg)?>

  • __sulog (): Ang pamamaraang ito ay tinatawag muna habang isinasagawa ang serialize (). Ibinabalik nito ang array ng pag-aari ng object sa paglilinis ng mga bagay sa klase ng PHP bago ang serialization.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __s Sleep () {echo 'Ito ay tinawag kapag ang serialize () na pamamaraan ay tinawag sa labas ng klase. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Dapat itong ibalik ang isang halaga kung saan ang mga elemento ay ang pangalan ng mga katangiang ibinalik. }} $ obj = bagong Mag-aaral ('Ashok') // Paunang itinalaga. i-serialize ang ($ obj) echo '?>

  • __gising na(): Ang pamamaraang ito ay tinatawag habang ang deserialization () ay naisakatuparan. Ibabalik nito ang trabaho upang maibalik ang mga katangian ng mga bagay at mapagkukunan sa pagtawag sa deserialization ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __s Sleep () {echo 'Ito ay tinawag kapag ang serialize () na pamamaraan ay tinawag sa labas ng klase. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Dapat itong ibalik ang isang halaga kung saan ang mga elemento ay ang pangalan ng mga katangiang ibinalik. } pagpapaandar ng publiko __wakeup () {echo 'Ito ay tinatawag kapag ang unserialize () na pamamaraan ay tinawag sa labas ng klase. '$ this-> name = 2 $ this-> gender =' Lalaki '}} $ obj = bagong Mag-aaral (' Ashok ') // Paunang itinalaga. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Tatawagan ang pamamaraang ito habang gumagamit ng pamamaraang echo upang direktang mai-print ang isang bagay. Inaasahan na ibabalik ang isang halaga ng string habang gumagamit ng mga pagkakataon sa klase na may mga pahayag sa pag-print ng PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} pagpapaandar ng publiko __toString () {return 'go go go'}} $ obj = bagong Mag-aaral ('Ashok') // Naunang itinalaga. echo $ obj?>

  • __invoke (): Ang pamamaraang ito ay tinukoy sa isang klase na tatawagin habang sinusubukang tawagan ang isang bagay sa isang paraan ng pag-andar ng pagtawag.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'This is a object'}} $ obj = new Student ('Ashok') // Paunang itinalaga . $ obj ()?>

pagkakasunud-sunod ng fibonacci c ++
  • __set_state ($ array): Ang pamamaraang ito ay tinatawag habang tumatawag sa var_export (). Ito ay isang static na pamamaraan na tinawag habang nag-e-export ng mga bagay na pag-aayos ng ari-arian at inaasahan ang tulad ng variable ng array bilang argument nito.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Paunang itinalaga. var_export ($ obj)?>

  • __clone (): Ang pamamaraang ito ay tinawag kapag ang bagay ay nakopya.
name = $ name $ this-> reg = $ reg $ this-> kasarian = $ kasarian} pagpapaandar ng publiko __clone () {echo __METHOD __. 'ikaw ang naglalagay ng clone ng object. '}} $ obj = bagong Mag-aaral (' Ashok ') // Paunang itinalaga. $ obj2 = clone $ obj var_dump ('object1:') var_dump ($ obj) echo 'var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Ang pamamaraang ito ay tinatawag ng var_dump () habang nagtatapon ng isang bagay upang makuha ang mga katangiang dapat ipakita. Kung ang pamamaraan ay hindi tinukoy sa isang bagay, ipapakita ang lahat ng pampubliko, protektado at pribadong mga pag-aari.
prop = $ val} pampublikong pagpapaandar __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (bagong Sample (22))?>

Sa pamamagitan nito, natapos namin ang pagtatapos ng pamamaraang mahika na ito sa artikulong PHP. Inaasahan kong nakakuha ka ng ideya ng iba't ibang mga pamamaraan ng mahika sa PHP.

Suriin ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng ” Mga Paraan ng Magic sa PHP ”At babalikan kita.