Koje su čarobne metode u PHP-u? i kako ih primijeniti?



Ovaj članak pružit će vam detaljno i sveobuhvatno znanje o raznim čarobnim metodama u PHP-u s primjerima.

U , posebne funkcije mogu se definirati na takav način da se mogu pozvati automatski i ne zahtijeva bilo koji poziv funkcije za izvršavanje koda unutar tih funkcija. Ova je značajka dostupna u posebnoj metodi poznatoj kao čarobne metode. U ovom ćemo članku razgovarati o glavnim čarobnim metodama u PHP-u.

Što su čarobne metode u PHP-u?

Metode koje započinju s 2 donje crte (__) u PHP-u se obično nazivaju čarobnim metodama. Imena ovih metoda ograničena su na neki popis PHP podržane ključne riječi koje su rezervirane. Dakle, bilo koja funkcija ne bi trebala biti definirana imenom PHP čarobnih metoda.





kako koristiti java iterator -

Magic-Methods-in-PHP

Obično bi te funkcije trebao definirati korisnik i nije ih potrebno eksplicitno zvati.



Popis čarobnih metoda u PHP-u

  • __construct ()
  • __destruct ()
  • __call ($ zabava, $ arg)
  • __callStatic ($ zabava, $ arg)
  • __get ($ svojstvo)
  • __set ($ svojstvo, $ vrijednost)
  • __isset ($ sadržaj)
  • __unset ($ sadržaj)
  • __spavati()
  • __probudi se()
  • __toString ()
  • __pozovi ()
  • __set_state ($ niz)
  • __klon()
  • __debugInfo ()
  • __construct (): To je metoda koja se automatski poziva nakon stvaranja objekta. Ovdje se može definirati bilo koji broj argumenata koji će se proslijediti kada se kreiraju objekti.
uzorak klase {funkcija user_def () {echo 'korisnički definirani konstruktor'} funkcija __construct () {echo 'predefinirani konstruktor'}} $ obj = novi uzorak ()?>

  • __destruct (): Destruktor je uobičajena značajka objektno orijentiranog jezika koja se pokreće čim nema drugih referenci na određeni objekt.
user_def () // objekt provjere je li uništen ili nije echo is_object ($ obj). ' '?>

  • __call ($ zabava, $ arg): Ova se metoda poziva kada se pozove nedefinirana ili nepristupačna metoda. Što znači da se poziva kada se na objektu pozove nedefinirana ili nepristupačna metoda.
run ('teacher') // Ako se unutar objekta pozove metoda koja ne postoji, tada će se automatski pozvati metoda __call (). $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ zabava, $ arg): Ova se metoda poziva kada se nedefinirana ili nepristupačna metoda poziva na statički način.
user_define ()?>

  • __get ($ svojstvo): Ova metoda koristi se za dobivanje vrijednosti za svojstva klase koja se dinamički kreiraju preopterećenjem PHP svojstava.
name = $ name $ this-> reg = $ reg} javna 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) // Instancirajte objekt s razredom Student i dodijelite početne vrijednosti na svojstva s konstruktorom. odjek 'Ime :'. $ obj-> ime. '' // Kada se pristupi privatnom vlasništvu, metoda __get () pozvat će se automatski, tako da vrijednost svojstva možemo dobiti neizravno. odjek 'reg :'. $ obj-> reg. '' // Metoda __get () poziva se automatski , i ona vraća različite vrijednosti prema samom objektu. ?>

  • __set ($ svojstvo, $ vrijednost): Ova metoda koristi se za stavljanje vrijednosti za svojstva klase koja se dinamički kreiraju preopterećenjem PHP svojstava.
name = $ name $ this-> reg = $ reg} javna funkcija __set ($ svojstvo, $ vrijednost) {if ($ property == 'reg') $ value $ property = $ value javna funkcija fun () {echo 'My ime je '. $ this-> name.', Moj registracijski broj je '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Imajte na umu da će početna vrijednost biti promijenjena kodom ispod. $ obj-> name = 'Sushma' // Svojstvo 'name' bit će uspješno dodijeljeno. Ako ne postoji metoda __set (), program će izbaciti iznimku. $ obj-> age = 16 // Svojstvo 'reg' bit će uspješno dodijeljeno. $ obj-> reg = 160 // 160 je nevaljana vrijednost, pa joj nije moguće dodijeliti. $ obj-> zabava ()?>

  • __isset ($ sadržaj); Ova će se metoda pozivati ​​tijekom pozivanja isset () ili empty () za nedefinirani ili nepristupačni član. Poziva se automatski tijekom provjere je li postavljeno potrebno preopterećeno svojstvo pomoću funkcije PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} javna funkcija __isset ($ content) {echo 'Svojstvo {$ content} je privatno method metoda __isset () automatski se poziva. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Inicijalno dodijeljeno. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ sadržaj): Ova će se metoda pozvati tijekom poziva reset () za nedefinirani ili nepristupačni član.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} javna funkcija __unset ($ content) {echo 'Poziva se automatski kada koristimo metodu unset () izvan klase. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Inicijalno dodijeljeno. poništi ($ obj-> spol) poništi ($ obj-> ime) poništi ($ obj-> reg)?>

  • __spavati(): Ova se metoda poziva prva tijekom izvršavanja serialize (). Vraća niz svojstava objekta za čišćenje objekata PHP klase prije serializacije.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} javna funkcija __sleep () {echo 'Poziva se kada se metoda serialize () pozove izvan klase. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Mora vratiti vrijednost čiji su elementi ime vraćenih svojstava. }} $ obj = novi student ('Ashok') // Inicijalno dodijeljeno. echo serialize ($ obj) echo ''?>

  • __probudi se(): Ova se metoda poziva dok se izvršava deserializacija (). To bi preokrenulo rad na vraćanju svojstava i resursa objekata na pozivanje deserializacije ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} javna funkcija __sleep () {echo 'Poziva se kada se metoda serialize () pozove izvan klase. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Mora vratiti vrijednost čiji su elementi ime vraćenih svojstava. } javna funkcija __wakeup () {echo 'Pozva se kad se metoda unserialize () pozove izvan klase. '$ this-> name = 2 $ this-> gender =' Muški '}} $ obj = novi student (' Ashok ') // Inicijalno dodijeljeno. var_dump (serializirati ($ obj)) var_dump (odjaviti (serializirati ($ obj)))?>

  • __toString (): Ova će se metoda pozvati tijekom korištenja metode echo za izravni ispis objekta. Očekuje se da će vratiti vrijednost niza tijekom korištenja instanci klase s PHP ispisima.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} javna funkcija __toString () {return 'go go go'}} $ obj = novi student ('Ashok') // Inicijalno dodijeljeno. echo $ obj?>

  • __invoke (): Ova metoda je definirana u klasi koja će se pozivati ​​dok se pokušava pozvati objekt na način pozivanja funkcije.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} javna funkcija __invoke () {echo 'Ovo je objekt'}} $ obj = new Student ('Ashok') // Inicijalno dodijeljeno . $ obj ()?>

  • __set_state ($ niz): Ova metoda se poziva tijekom poziva var_export (). To je statična metoda koja se poziva prilikom izvoza niza svojstava objekata i očekuje takvu varijablu niza kao svoj argument.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Inicijalno dodijeljeno. var_export ($ obj)?>

  • __klon(): Ova se metoda poziva kada se objekt kopira.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} javna funkcija __clone () {echo __METHOD __. 'klonirate objekt. '}} $ obj = novi student (' Ashok ') // Inicijalno dodijeljeno. $ obj2 = klon $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Ovu metodu poziva var_dump () dok izbacuje objekt da bi dobio svojstva koja bi trebala biti prikazana. Ako metoda nije definirana na objektu, tada će biti prikazana sva javna, zaštićena i privatna svojstva.
prop = $ val} javna funkcija __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (novi uzorak (22))?>

stvoriti paket u javi

Ovim dolazimo do kraja ove čarobne metode u članku o PHP-u. Nadam se da ste dobili ideju o raznim čarobnim metodama u PHP-u.

Pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta.

Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare ' Magične metode u PHP ”I javit ću vam se.