Milyen varázslatos módszerek vannak a PHP-ben? és hogyan lehet ezeket megvalósítani?



Ez a cikk részletes és átfogó ismereteket nyújt a PHP különféle mágikus módszereiről, példákkal.

Ban ben , a speciális funkciókat úgy definiálhatjuk, hogy automatikusan meghívhatók legyenek, és a funkciók belsejében lévő kód végrehajtásához nincs szükség függvényhívásra. Ez a szolgáltatás egy speciális, mágikus módszerként ismert módszerben érhető el. Ebben a cikkben a PHP legfontosabb mágikus módszereit tárgyaljuk.

Mik a varázslatos módszerek a PHP-ben?

A 2 aláhúzással (__) kezdődő módszereket általában Magic módszereknek nevezik a PHP-ben. Ezek a módszerek nevei csak a PHP fenntartott támogatott kulcsszavak. Tehát semmilyen funkciót nem szabad meghatározni a PHP mágikus módszerek nevével.





Magic-Methods-in-PHP

Ezeket a függvényeket általában a felhasználónak kell meghatároznia, és nem szükséges kifejezetten felhívni őket.



Mágikus módszerek listája a PHP-ben

  • __construct ()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ tulajdonság)
  • __set ($ tulajdonság, $ érték)
  • __isset ($ content)
  • __unset ($ content)
  • __alvás()
  • __Kelj fel()
  • __toString ()
  • __invoke ()
  • __set_state ($ tömb)
  • __klón ()
  • __hibakeresési információ()
  • __construct (): Ez egy olyan módszer, amely automatikusan meghívásra kerül egy objektum létrehozása után. Itt tetszőleges számú argumentum definiálható, amelyet objektumok létrehozásakor adunk át.
osztályminta {function user_def () {echo 'user define constructor'} function __construct () {echo 'predefined constructor'}} $ obj = new sample ()?>

  • __destruct (): A romboló az objektumorientált nyelv közös jellemzője, amely akkor aktiválódik, amint nincs más utalás egy adott objektumra.
user_def () // az objektum ellenőrzése megsemmisült vagy sem echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Ezt a módszert akkor hívják meg, ha meghatározatlan vagy elérhetetlen módszert hívnak. Ami azt jelenti, hogy akkor hívják meg, ha egy objektumon egy meghatározatlan vagy elérhetetlen metódust hívnak meg.
run ('teacher') // Ha a nem létező metódust meghívják az objektumon belül, akkor a __call () metódust automatikusan meghívják. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Ezt a módszert akkor hívjuk meg, ha statikus módon egy meghatározatlan vagy elérhetetlen módszert hívunk meg.
user_define ()?>

  • __get ($ tulajdonság): Ezt a módszert használjuk a PHP tulajdonságok túlterhelésével dinamikusan létrehozott osztálytulajdonságok értékeinek lekérésére.
name = $ name $ this-> reg = $ reg} public function __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) // Instantálja az objektumot a Student osztályba, és rendeljen hozzá kezdeti értékeket a tulajdonságokkal a konstruktorral. 'Név :' visszhang. $ obj-> név. '' // A magántulajdon elérésekor a __get () metódus automatikusan meghívásra kerül, így közvetve megkapjuk a tulajdonság értékét. visszhang 'reg :'. $ obj-> reg. '' // A __get () metódust automatikusan meghívják ,, és az adott objektumnak megfelelõen különbözõ értékeket ad vissza. ?>

  • __set ($ tulajdonság, $ érték): Ezt a módszert a PHP tulajdonságok túlterhelésével dinamikusan létrehozott osztálytulajdonságok értékeinek elhelyezésére használják.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'Saját név '. $ this-> név.', A regisztrációs számom '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Ne feledje, hogy a kezdeti értéket a kód megváltoztatja lent. $ obj-> name = 'Sushma' // A 'name' tulajdonság sikeresen lesz hozzárendelve. Ha nincs __set () metódus, akkor a program kivételt vet. $ obj-> age = 16 // A 'reg' tulajdonságot sikeresen hozzárendelik. A $ obj-> reg = 160 // 160 érvénytelen érték, ezért nem rendelhető hozzá. $ obj-> fun ()?>

  • __isset ($ content); Ezt a módszert akkor hívják meg, amikor egy nem definiált vagy elérhetetlen tag számára az isset () vagy az üres () hívást kezdeményezi. Ez automatikusan meghívásra kerül, miközben ellenőrzi, hogy a szükséges túlterhelt tulajdonság be van-e állítva, a PHP isset () függvény segítségével.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'A (z) {$ content} tulajdonság privát , A __isset () metódust automatikusan meghívják. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Kezdetben hozzárendelve. echo setset ($ obj-> gender), '' echo setset ($ obj-> name), 'echo setset ($ obj-> reg),' '?

  • __unset ($ content): Ezt a módszert a reset () meghívásakor hívjuk meg egy meghatározatlan vagy elérhetetlen tag számára.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Automatikusan meghívásra kerül, ha az unset () metódust az osztályon kívül használjuk. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Kezdetben hozzárendelve. unset ($ obj-> gender) unset ($ obj-> név) unset ($ obj-> reg)?>

  • __alvás(): Ezt a módszert hívják először a serialize () végrehajtása közben. Visszaadja az objektum tulajdonságtömbjét a PHP osztályú objektumok tisztításakor a sorosítás előtt.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Akkor hívják meg, ha a serialize () metódust az osztályon kívül meghívják. '$ this-> name = base64_encode ($ this-> name) return tömb (' name ',' reg ') // Vissza kell adnia egy olyan értéket, amelynek az elemei a visszaadott tulajdonságok neve. }} $ obj = new Student ('Ashok') // Kezdetben hozzárendelve. echo serialize ($ obj) echo ''?>

hogyan használjuk a rendezést a c ++ - ban
  • __Kelj fel(): Ezt a módszert a deserialization () végrehajtása közben hívjuk meg. Megfordítaná az objektumok tulajdonságainak és erőforrásainak helyreállítását a deserializációra () hivatkozva.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Akkor hívják meg, ha a serialize () metódust az osztályon kívül meghívják. '$ this-> name = base64_encode ($ this-> name) return tömb (' name ',' reg ') // Vissza kell adnia egy olyan értéket, amelynek az elemei a visszaadott tulajdonságok neve. } public function __wakeup () {echo 'Akkor hívják meg, ha az unserialize () metódust az osztályon kívülre hívják. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Kezdetben hozzárendelve. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Ezt a módszert akkor hívjuk meg, amikor echo metódust használunk egy objektum közvetlen nyomtatásához. Várhatóan egy string értéket ad vissza, miközben osztálypéldányokat használ PHP utasításokkal.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Kezdetben hozzárendelve. echo $ obj?>

  • __invoke (): Ez a módszer egy olyan osztályban van definiálva, amelyet akkor hívnak meg, amikor egy objektumot függvényhívás útján próbálnak meghívni.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'This is an object'}} $ obj = new Student ('Ashok') // Kezdetben hozzárendelve . $ obj ()?>

  • __set_state ($ tömb): Ezt a módszert a var_export () meghívása közben hívják meg. Ez egy statikus módszer, amelyet az objektumok tulajdonságtömbjének exportálása közben hívnak meg, és az ilyen tömb változóra számít.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Kezdetben hozzárendelve. var_export ($ obj)?>

  • __klón (): Ezt a módszert az objektum másolásakor hívják meg.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'Ön klónozza az objektumot. '}} $ obj = new Student (' Ashok ') // Kezdetben hozzárendelve. $ obj2 = klón $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __hibakeresési információ(): Ezt a módszert a var_dump () hívja meg, miközben egy objektumot kidob, hogy megkapja a megjelenítendő tulajdonságokat. Ha a metódus nincs definiálva egy objektumon, akkor az összes nyilvános, védett és magántulajdon megjelenik.
prop = $ val} public function __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (új minta (22))?>

Ezzel véget értünk ennek a varázslatnak a PHP cikkében. Remélem, ötletet kapott a PHP különböző mágikus módszereiről.

Nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben. ” Mágikus módszerek PHP ”És visszatérek hozzád.