Шта су магичне методе у ПХП-у? и како их применити?



Овај чланак ће вам пружити детаљно и свеобухватно знање о разним магијским методама у ПХП-у са примерима.

У , посебне функције могу се дефинисати на такав начин да се могу позвати аутоматски и не захтева ниједан позив функције за извршавање кода унутар ових функција. Ова функција је доступна у посебној методи познатој као магијске методе. У овом чланку ћемо размотрити најбоље чаробне методе у ПХП-у.

Шта су магичне методе у ПХП-у?

Методе које почињу са 2 доње црте (__) у ПХП-у се обично називају Магиц методе. Имена ових метода ограничена су на неки списак ПХП подржане кључне речи које су резервисане. Дакле, ниједна функција не би требало да буде дефинисана именом ПХП магијских метода.





Magic-Methods-in-PHP

Обично ове функције треба да дефинише корисник и нема потребе да их експлицитно зовете.



Списак чаробних метода у ПХП-у

  • __цонструцт ()
  • __деструцт ()
  • __цалл ($ забава, $ арг)
  • __цаллСтатиц ($ забава, $ арг)
  • __гет ($ својство)
  • __сет ($ својство, $ вредност)
  • __иссет ($ садржај)
  • __унсет ($ садржај)
  • __слееп ()
  • __пробудити()
  • __тоСтринг ()
  • __инвоке ()
  • __сет_стате ($ арраи)
  • __цлоне ()
  • __дебугИнфо ()
  • __цонструцт (): То је метода која се аутоматски позива након стварања објекта. Овде се може дефинисати било који број аргумената који ће се проследити када се креирају објекти.
узорак класе {функција усер_деф () {ецхо 'кориснички дефинисани конструктор'} функција __цонструцт () {ецхо 'предефинирани конструктор'}} $ обј = нев сампле ()?>

  • __деструцт (): Деструктор је уобичајена карактеристика објектно оријентисаног језика која се покреће чим нема других референци на одређени објекат.
усер_деф () // провера објекта је уништена или није ецхо ис_објецт ($ обј). ' '?>

  • __цалл ($ фун, $ арг): Ова метода се позива када се позове недефинисана или неприступачна метода. Што значи да се позива када се на објекту позове недефинисана или неприступачна метода.
рун ('теацхер') // Ако се у објекту позове метода која не постоји, тада ће се аутоматски позвати метода __цалл (). $ обј-> еат ('асхок', 'оранге') $ обј-> усер_дефине ()?>



  • __цаллСтатиц ($ забава, $ арг): Ова метода се позива када се на статички начин позове недефинисана или неприступачна метода.
усер_дефине ()?>

  • __гет ($ својство): Овај метод се користи за добијање вредности за својства класе која се динамички креирају преоптерећењем ПХП својстава.
наме = $ наме $ тхис-> рег = $ рег} јавна функција __гет ($ пропертиНаме) {иф ($ пропертиНаме == 'рег') {иф ($ тхис-> рег> 30) {ретурн $ тхис-> рег - 10} елсе {ретурн $ тхис -> $ пропертиНаме}} елсе {ретурн $ тхис -> $ пропертиНаме}}} $ обј = нев Студент ('Асхок', 60) // Инстанцирајте објекат са студентом класе и доделите почетне вредности својствима са конструктором. ецхо 'Наме :'. $ обј-> име. '' // Када се приступи приватном власништву, метода __гет () позваће се аутоматски, тако да индиректно можемо добити вредност својства. ецхо 'рег :'. $ обј-> рег. '' // Метода __гет () се позива аутоматски , и враћа различите вредности у складу са самим објектом. ?>

  • __сет ($ својство, $ вредност): Ова метода се користи за стављање вредности за својства класе која се динамички креирају преоптерећењем ПХП својстава.
наме = $ наме $ тхис-> рег = $ рег} јавна функција __сет ($ својство, $ вредност) {иф ($ проперти == 'рег') $ валуе $ проперти = $ валуе публиц фунцтион фун () {ецхо 'Ми име је '. $ тхис-> наме.', Мој регистрацијски број је '. $ тхис-> рег}} $ обј = нев Студент (' Асхок ', 40) // Имајте на уму да ће почетна вредност бити промењена кодом доле. $ обј-> наме = 'Сусхма' // Својство 'наме' ће бити успешно додељено. Ако не постоји метода __сет (), програм ће избацити изузетак. $ обј-> аге = 16 // Својство 'рег' ће бити успешно додељено. $ обј-> рег = 160 // 160 је неважећа вредност, па јој не може бити додељена. $ обј-> фун ()?>

  • __иссет ($ садржај); Ова метода ће бити позвана док позивамо иссет () или емпти () за недефинисани или неприступачни члан. Позива се аутоматски док се проверава да ли је постављено потребно преоптерећено својство или не, помоћу функције ПХП иссет ().
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер} јавна функција __иссет ($ цонтент) {ецхо 'Својство {$ цонтент} је приватно метход метода __иссет () се аутоматски позива. 'ецхо иссет ($ тхис -> $ цонтент)}} $ обј = нев Студент (' Асхок ', 30) // Првобитно додељен. ецхо иссет ($ обј-> гендер), '' ецхо иссет ($ обј-> наме), '' ецхо иссет ($ обј-> рег), ''?>

  • __унсет ($ садржај): Ова метода ће бити позвана током позива ресет () за недефинисаног или неприступачног члана.
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер} јавна функција __унсет ($ цонтент) {ецхо 'Позива се аутоматски када користимо методу унсет () изван класе. 'ецхо иссет ($ тхис -> $ цонтент)}} $ обј = нев Студент (' Асхок ', 30) // Првобитно додељен. унсет ($ обј-> гендер) унсет ($ обј-> наме) унсет ($ обј-> рег)?>

  • __слееп (): Ова метода се позива прва приликом извршавања сериализе (). Враћа низ својстава објекта за чишћење објеката ПХП класе пре сериализације.
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер} јавна функција __слееп () {ецхо 'Позваће се када се метода сериализе () позове изван класе. '$ тхис-> наме = басе64_енцоде ($ тхис-> наме) ретурн арраи (' наме ',' рег ') // Мора да врати вредност чији су елементи име враћених својстава. }} $ обј = нови студент ('Асхок') // Првобитно додељен. ецхо сериализе ($ обј) ецхо ''?>

  • __пробудити(): Ова метода се позива док се извршава десериализација (). То би преокренуло рад на враћању својстава и ресурса објеката на позивање десериализације ().
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер} јавна функција __слееп () {ецхо 'Позваће се када се метода сериализе () позове изван класе. '$ тхис-> наме = басе64_енцоде ($ тхис-> наме) ретурн арраи (' наме ',' рег ') // Мора да врати вредност чији су елементи име враћених својстава. } јавна функција __вакеуп () {ецхо 'Позваће се када се метода унсериализе () позове изван класе. '$ тхис-> наме = 2 $ тхис-> гендер =' Мале '}} $ обј = нев Студент (' Асхок ') // Првобитно додељено. вар_думп (сериализе ($ обј)) вар_думп (унсериализе (сериализе ($ обј)))?>

  • __тоСтринг (): Ова метода ће се позвати док се методом ецхо директно штампа објекат. Очекује се да ће вратити вредност низа док се користе инстанце класе са ПХП исписима.
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер} јавна функција __тоСтринг () {ретурн 'го го го'}} $ обј = нев Студент ('Асхок') // Првобитно додељено. ецхо $ обј?>

  • __инвоке (): Ова метода је дефинисана у класи која ће бити позвана док се покушава позвати објекат на начин позивања функције.
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер} јавна функција __инвоке () {ецхо 'Ово је објекат'}} $ обј = нев Студент ('Асхок') // Првобитно додељено . $ обј ()?>

  • __сет_стате ($ арраи): Ова метода се позива током позива вар_екпорт (). То је статична метода која се позива при извозу низа својстава објеката и очекује такву променљиву низа као свој аргумент.
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер}} $ обј = нев Студент ('Асхок') // Првобитно додељено. вар_екпорт ($ обј)?>

  • __цлоне (): Ова метода се позива када се објекат копира.
наме = $ наме $ тхис-> рег = $ рег $ тхис-> гендер = $ гендер} јавна функција __цлоне () {ецхо __МЕТХОД __. 'клонирате објекат. '}} $ обј = нови студент (' Асхок ') // Првобитно додељен. $ обј2 = клон $ обј вар_думп ('објецт1:') вар_думп ($ обј) ецхо '' вар_думп ('објецт2:') вар_думп ($ обј2)?>

бинарни алгоритам претраживања у јави
  • __дебугИнфо (): Ову методу позива вар_думп () док избацује објекат да би добио својства која би требала бити приказана. Ако метода није дефинисана на објекту, тада ће бити приказана сва јавна, заштићена и приватна својства.
проп = $ вал} јавна функција __дебугИнфо () {ретурн ['пропСкуаред' => $ тхис-> проп ** 2,]}} вар_думп (нови узорак (22))?>

Овим долазимо до краја ове чаробне методе у ПХП чланку. Надам се да сте добили представу о разним магијским методама у ПХП-у.

Погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250.000 задовољних ученика раширених широм света.

Имате питање за нас? Молимо вас да то поменете у одељку за коментаре „ Магијске методе у ПХП ”И јавићу вам се.