Какви са магическите методи в PHP? и как да ги приложим?



Тази статия ще ви предостави подробни и изчерпателни познания за различните магически методи в PHP с примери.

В , специалните функции могат да бъдат дефинирани по такъв начин, че да могат да се извикват автоматично и не изисква никакво извикване на функция за изпълнение на кода вътре в тези функции. Тази функция се предлага в специален метод, известен като магически методи. В тази статия ще обсъдим най-добрите магически методи в PHP.

Какво представляват магическите методи в PHP?

Методите, които започват с 2 долни черти (__), обикновено се наричат ​​магически методи в PHP. Тези имена на методи са ограничени до някакъв списък от PHP поддържани ключови думи, които са запазени. Така че никоя функция не трябва да бъде дефинирана с името на PHP магически методи.





Magic-Methods-in-PHP

Обикновено тези функции трябва да бъдат дефинирани от потребителя и не е необходимо да ги извиквате изрично.



Списък на магическите методи в PHP

  • __construct ()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ свойство)
  • __set ($ свойство, $ стойност)
  • __isset ($ съдържание)
  • __unset ($ съдържание)
  • __sleep ()
  • __Събудете се()
  • __toString ()
  • __invoke ()
  • __set_state ($ масив)
  • __clone ()
  • __debugInfo ()
  • __construct (): Това е метод, който се извиква автоматично след създаването на обект. Тук може да се дефинира произволен брой аргументи, които ще бъдат предадени при създаване на обекти.
пример за клас {функция user_def () {ехо 'дефиниран от потребителя конструктор'} функция __construct () {ехо 'предварително дефиниран конструктор'}} $ obj = нова проба ()?>

  • __destruct (): Destructor е често срещана характеристика на обектно-ориентирания език, който се задейства веднага щом няма други препратки към определен обект.
user_def () // обектът за проверка е унищожен или не echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Този метод се извиква, когато се извиква недефиниран или недостъпен метод. Което означава, че се извиква, когато на обект се извика недефиниран или недостъпен метод.
run ('учител') // Ако методът, който не съществува, се извика в обекта, тогава методът __call () ще бъде извикан автоматично. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Този метод се извиква, когато недефиниран или недостъпен метод се извиква по статичен начин.
user_define ()?>

  • __get ($ свойство): Този метод се използва за получаване на стойности за свойства на класа, създадени динамично чрез претоварване на свойствата на PHP.
name = $ name $ this-> reg = $ reg} публична функция __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) // Инстанцирайте обекта с класа Student и задайте начални стойности към свойствата с конструктора. ехо 'Име :'. $ obj-> име. '' // Когато се осъществи достъп до частната собственост, методът __get () ще бъде извикан автоматично, така че можем да получим стойността на свойството косвено. ехо 'reg :'. $ obj-> рег. '' // Методът __get () се извиква автоматично , и той връща различни стойности според самия обект. ?>

  • __set ($ свойство, $ стойност): Този метод се използва за поставяне на стойности за свойства на класа, създадени динамично чрез претоварване на свойствата на PHP.
name = $ name $ this-> reg = $ reg} публична функция __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My name is '. $ this-> name.', Моят регистрационен номер е '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Имайте предвид, че първоначалната стойност ще бъде променена от кода По-долу. $ obj-> name = 'Sushma' // Свойството 'name' ще бъде присвоено успешно. Ако няма метод __set (), тогава програмата ще изведе изключение. $ obj-> age = 16 // Свойството 'reg' ще бъде присвоено успешно. $ obj-> reg = 160 // 160 е невалидна стойност, така че не може да бъде присвоена. $ obj-> fun ()?>

  • __isset ($ съдържание); Този метод ще бъде извикан по време на извикване на isset () или празен () за недефиниран или недостъпен член. Той се извиква автоматично, докато се проверява дали е зададено необходимо претоварено свойство или не, чрез функцията PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} публична функция __isset ($ content) {echo 'Свойството {$ content} е частно , методът __isset () се извиква автоматично. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Първоначално назначен. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''>

  • __unset ($ съдържание): Този метод ще бъде извикан по време на извикване на reset () за недефиниран или недостъпен член.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} публична функция __unset ($ content) {echo 'Тя се извиква автоматично, когато използваме метода unset () извън класа. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Първоначално назначен. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __sleep (): Този метод се извиква първи, докато се изпълнява serialize (). Той връща масива от свойства на обекта за почистване на обекти от клас PHP преди сериализация.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} публична функция __sleep () {echo 'Извиква се, когато методът serialize () е извикан извън класа. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Трябва да върне стойност, на която елементите са името на върнатите свойства. }} $ obj = нов студент ('Ashok') // Първоначално назначен. echo сериализира ($ obj) echo ''?>

как да проверите палиндрома в java -
  • __Събудете се(): Този метод се извиква, докато се изпълнява десериализация (). Това би обърнало работата за възстановяване на свойствата и ресурсите на обекти при извикване на десериализация ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} публична функция __sleep () {echo 'Извиква се, когато методът serialize () е извикан извън класа. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Трябва да върне стойност, на която елементите са името на върнатите свойства. } публична функция __wakeup () {echo 'Извиква се, когато методът unserialize () е извикан извън класа. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Първоначално назначен. var_dump (сериализира ($ obj)) var_dump (десериализира (сериализира ($ obj)))?>

  • __toString (): Този метод ще бъде извикан, докато се използва echo метод за директно отпечатване на обект. Очаква се да върне стойност на низ, докато се използват екземпляри на клас с отпечатване на PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} публична функция __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Първоначално назначен. echo $ obj?>

  • __invoke (): Този метод е дефиниран в клас, който ще бъде извикан при опит за извикване на обект по начин на извикване на функция.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} публична функция __invoke () {echo 'Това е обект'}} $ obj = new Student ('Ashok') // Първоначално назначен . $ obj ()?>

  • __set_state ($ масив): Този метод се извиква при извикване на var_export (). Това е статичен метод, извикан при експортиране на масив от свойства на обекти и очаква такава променлива на масива като негов аргумент.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Първоначално назначен. var_export ($ obj)?>

  • __clone (): Този метод се извиква, когато обектът се копира.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} публична функция __clone () {echo __METHOD __. 'клонирате обекта. '}} $ obj = нов студент (' Ashok ') // Първоначално назначен. $ obj2 = клониране $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Този метод се извиква от var_dump (), докато изхвърля обект, за да получи свойствата, които трябва да бъдат показани. Ако методът не е дефиниран за обект, ще бъдат показани всички публични, защитени и частни свойства.
prop = $ val} публична функция __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (нова проба (22))?>

С това стигаме до края на този магически метод в статията на PHP. Надявам се да имате представа за различните магически методи в PHP.

Вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на ” Магически методи в PHP ”И ще се свържа с вас.