Į , specialias funkcijas galima apibrėžti taip, kad jas būtų galima iškviesti automatiškai, o norint atlikti šių funkcijų kodą, nereikia jokių funkcijų iškvietimo. Ši funkcija pasiekiama naudojant specialų metodą, vadinamą magijos metodais. Šiame straipsnyje aptarsime geriausius magijos metodus PHP.
Kas yra stebuklingi metodai PHP?
Metodai, prasidedantys 2 pabraukimais (__), PHP paprastai vadinami magijos metodais. Šie metodų pavadinimai apsiriboja tam tikru PHP palaikomi raktiniai žodžiai, kurie yra rezervuoti. Taigi jokios funkcijos nereikėtų apibrėžti PHP magijos metodų pavadinimais.
Paprastai šias funkcijas turėtų apibrėžti vartotojas ir nereikia jų aiškiai kviesti.
Magiškų metodų sąrašas PHP
- __construct ()
- __destruct ()
- __call ($ fun, $ arg)
- __callStatic ($ fun, $ arg)
- __get (nuosavybė $)
- __set (nuosavybė $, $ value)
- __isset ($ content)
- __unset ($ content)
- __miega ()
- __wakeup ()
- __toString ()
- __invoke ()
- __set_state ($ masyvas)
- __klonas ()
- __debugInfo ()
- __construct (): Tai metodas, kuris automatiškai iškviečiamas sukūrus objektą. Čia galima apibrėžti bet kokį skaičių argumentų, kurie bus perduoti, kai bus sukurti objektai.
klasės pavyzdys {funkcija user_def () {echo 'vartotojo apibrėžtas konstruktorius'} funkcija __construct () {echo 'iš anksto nustatytas konstruktorius'}} $ obj = naujas pavyzdys ()?>
- __destruct (): Destruktorius yra dažnas į objektą orientuotos kalbos bruožas, kuris suveikia, kai tik nėra kitų nuorodų į konkretų objektą.
user_def () // patikrinamas objektas sunaikintas arba ne echo is_object ($ obj). ' '?>
- __call ($ fun, $ arg): Šis metodas vadinamas tada, kai vadinamas neapibrėžtu arba neprieinamu metodu. Tai reiškia, kad jis iškviečiamas, kai objektui taikomas neapibrėžtas arba neprieinamas metodas.
run ('mokytojas') // Jei objekte iškviečiamas neegzistuojantis metodas, metodas __call () bus iškviestas automatiškai. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>
- __callStatic ($ fun, $ arg): Šis metodas vadinamas, kai statiniu būdu yra naudojamas neapibrėžtas arba neprieinamas metodas.
vartotojo_define ()?>
- __get ($ nuosavybė): Šis metodas naudojamas klasių savybių, dinamiškai sukurtų PHP nuosavybės perkrovos, vertėms gauti.
name = $ name $ this-> reg = $ reg} viešoji funkcija __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) // Intuituokite objektą su Student klasės ir priskirkite pradines vertes į savybes su konstruktoriumi. aidas „Vardas :“. $ obj-> vardas. '' // Kai bus pasiekta privati nuosavybė, metodas __get () bus iškviestas automatiškai, todėl nuosavybės vertę galime gauti netiesiogiai. aidas 'reg :'. $ obj-> reg. '' // Metodas __get () vadinamas automatiškai , ir jis grąžina skirtingas reikšmes pagal patį objektą. ?>
- __set (nuosavybė $, $ value): Šis metodas naudojamas klasių savybių, dinamiškai sukurtų PHP ypatybėms perkraunant, reikšmėms pateikti.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'Mano vardas yra „. $ this-> vardas.“, Mano registracijos numeris yra. žemiau. $ obj-> name = 'Sushma' // Ypatybė 'vardas' bus sėkmingai priskirta. Jei nėra metodo __set (), programa išmes išimtį. $ obj-> age = 16 // „Reg“ ypatybė bus sėkmingai priskirta. $ obj-> reg = 160 // 160 yra neteisinga reikšmė, todėl jos priskirti nepavyksta. $ obj-> fun ()?>
- __isset ($ content); Šis metodas bus iškviestas skambinant nenustatytam ar nepasiekiamam nariui isset () arba empty (). Jis iškviečiamas automatiškai, naudojant PHP isset () funkciją, tikrinant, ar nustatyta reikalinga perkrauta ypatybė, ar ne.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} viešoji funkcija __isset ($ content) {echo 'Ypatybė {$ content} yra privati , metodas __isset () vadinamas automatiškai. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Iš pradžių paskirta. echo isset ($ obj-> gender), 'echo isset ($ obj-> name),' echo isset ($ obj-> reg), ''?>
- __unset ($ content): Šis metodas bus iškviestas, kai bus nustatytas neapibrėžto ar nepasiekiamo nario atstatymas ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Tai vadinama automatiškai, kai mes naudojamės metodą unset () už klasės ribų. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Iš pradžių paskirta. unset ($ obj-> gender) unset ($ obj-> vardas) unset ($ obj-> reg)?>
- __sleep (): Šis metodas pirmiausia vadinamas vykdant serialize (). Jis grąžina objekto nuosavybės masyvą valant PHP klasės objektus prieš serijinį.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Jis iškviečiamas, kai serialize () metodas iškviečiamas už klasės ribų. '$ this-> name = base64_encode ($ this-> name) return masyvas (' name ',' reg ') // Jis turi grąžinti vertę, kurios elementai yra grąžintų savybių pavadinimas. }} $ obj = new Student ('Ashok') // Iš pradžių paskirta. echo serialize ($ obj) echo ''?>
kaip naudotis skaitytuvais Java
- __wakeup (): Šis metodas vadinamas tuo metu, kai vykdoma deserializacija (). Tai pakeistų objektų savybių ir išteklių atkūrimo procesą, naudojant deserializaciją ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Jis iškviečiamas, kai serialize () metodas iškviečiamas už klasės ribų. '$ this-> name = base64_encode ($ this-> name) return masyvas (' name ',' reg ') // Jis turi grąžinti vertę, kurios elementai yra grąžintų savybių pavadinimas. } public function __wakeup () {echo 'Jis iškviečiamas, kai metodas unserialize () iškviečiamas už klasės ribų. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Iš pradžių paskirta. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>
- __toString (): Šis metodas bus iškviestas naudojant echo metodą, norint tiesiogiai spausdinti objektą. Tikimasi, kad ji grąžins eilutės vertę, kai naudosite klasės egzempliorius su PHP spausdinimo teiginiais.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} viešoji funkcija __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Iš pradžių priskirta. echo $ obj?>
- __invoke (): Šis metodas yra apibrėžtas klasėje, kuri bus iškviesta bandant iškviesti objektą skambinimo funkcijos būdu.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} viešoji funkcija __invoke () {echo 'Tai objektas'}} $ obj = new Student ('Ashok') // Iš pradžių priskirtas . $ obj ()?>
- __set_state ($ masyvas): Šis metodas iškviečiamas iškviečiant var_export (). Tai yra statinis metodas, naudojamas eksportuojant objektų nuosavybės masyvą, ir tikisi tokio masyvo kintamojo kaip jo argumento.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Iš pradžių priskirtas. var_export ($ obj)?>
- __clone (): Šis metodas vadinamas, kai objektas nukopijuojamas.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'jūs klonuojate objektą. '}} $ obj = new Student (' Ashok ') // Iš pradžių paskirta. $ obj2 = klonas $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>
- __debugInfo (): Šį metodą iškviečia var_dump (), o išmetant objektą gaunamos savybės, kurios turėtų būti rodomos. Jei metodas nėra apibrėžtas objekte, bus rodomos visos viešosios, saugomos ir privačios nuosavybės.
prop = $ val} viešoji funkcija __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (naujas pavyzdys (22))?>
Tuo mes atėjome prie šio magiško metodo pabaigos PHP straipsnyje. Tikiuosi, kad supratote įvairius stebuklingus metodus PHP.
Patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje.
Turite mums klausimą? Prašau paminėti tai komentarų skiltyje “ Magiški metodai PHP “Ir aš susisieksiu su jumis.