Czym są magiczne metody w PHP? i jak je wdrożyć?



W tym artykule znajdziesz szczegółową i wszechstronną wiedzę na temat różnych metod magicznych w PHP wraz z przykładami.

W funkcje specjalne można zdefiniować w taki sposób, że mogą być wywoływane automatycznie i nie wymagają żadnego wywołania funkcji do wykonania kodu wewnątrz tych funkcji. Ta funkcja jest dostępna w specjalnej metodzie zwanej metodami magicznymi. W tym artykule omówimy najważniejsze metody magiczne w PHP.

Czym są magiczne metody w PHP?

Metody zaczynające się od 2 podkreślenia (__) są ogólnie nazywane w PHP metodami Magic. Nazwy tych metod są ograniczone do jakiejś listy PHP obsługiwane słowa kluczowe, które są zastrzeżone. Dlatego żadna funkcja nie powinna być definiowana z nazwą magicznych metod PHP.





Magic-Methods-in-PHP

Zwykle funkcje te powinny być zdefiniowane przez użytkownika i nie ma potrzeby ich jawnego wywoływania.



Lista magicznych metod w PHP

  • __zbudować()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ property)
  • __set ($ właściwość, $ wartość)
  • __isset ($ content)
  • __unset ($ content)
  • __sen()
  • __Obudź się()
  • __toString ()
  • __odwołać się()
  • __set_state ($ tablica)
  • __clone ()
  • __Informacje debugowania()
  • __zbudować(): Jest to metoda wywoływana automatycznie po utworzeniu obiektu. Można tutaj zdefiniować dowolną liczbę argumentów, które zostaną przekazane podczas tworzenia obiektów.
klasa przykład {function user_def () {echo 'konstruktor zdefiniowany przez użytkownika'} function __construct () {echo 'konstruktor predefiniowany'}} $ obj = new sample ()?>

  • __destruct (): Destruktor jest wspólną cechą języka zorientowanego obiektowo, która jest uruchamiana, gdy nie ma innych odwołań do określonego obiektu.
user_def () // sprawdź czy obiekt jest zniszczony czy nie echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Ta metoda jest wywoływana, gdy wywoływana jest metoda niezdefiniowana lub niedostępna. Co oznacza, że ​​jest wywoływana, gdy na obiekcie zostanie wywołana niezdefiniowana lub niedostępna metoda.
run ('teacher') // Jeśli metoda, która nie istnieje, zostanie wywołana w obiekcie, metoda __call () zostanie wywołana automatycznie. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Ta metoda jest wywoływana, gdy niezdefiniowana lub niedostępna metoda jest wywoływana w sposób statyczny.
user_define ()?>

  • __get ($ property): Ta metoda służy do pobierania wartości właściwości klas tworzonych dynamicznie przez przeciążanie właściwości PHP.
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) // Utwórz instancję obiektu z klasą Student i przypisz wartości początkowe do właściwości za pomocą konstruktora. echo 'Nazwa :'. $ obj-> nazwa. '' // Kiedy uzyskuje się dostęp do własności prywatnej, metoda __get () zostanie wywołana automatycznie, więc możemy pośrednio pobrać wartość właściwości. echo 'reg :'. $ obj-> reg. '' // Metoda __get () jest wywoływana automatycznie , i zwraca różne wartości w zależności od samego obiektu. ?>

  • __set ($ właściwość, $ wartość): Ta metoda służy do umieszczania wartości dla właściwości klas tworzonych dynamicznie przez przeciążanie właściwości PHP.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My name to '. $ this-> name.', Mój numer rejestracyjny to '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Zauważ, że wartość początkowa zostanie zmieniona przez kod poniżej. $ obj-> name = 'Sushma' // Właściwość 'name' zostanie przypisana pomyślnie. Jeśli nie ma metody __set (), program zgłosi wyjątek. $ obj-> age = 16 // Właściwość „reg” zostanie przypisana pomyślnie. $ obj-> reg = 160 // 160 jest nieprawidłową wartością, więc nie można jej przypisać. $ obj-> fun ()?>

  • __isset ($ content); Ta metoda zostanie wywołana podczas wywoływania isset () lub empty () dla niezdefiniowanego lub niedostępnego elementu członkowskiego. Jest wywoływana automatycznie podczas sprawdzania, czy wymagana właściwość przeciążenia jest ustawiona, czy nie, za pomocą funkcji PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __isset ($ content) {echo 'Właściwość {$ content} jest prywatna , metoda __isset () jest wywoływana automatycznie. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Początkowo przypisane. echo isset ($ obj-> gender), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ content): Ta metoda zostanie wywołana podczas wywoływania funkcji reset () dla niezdefiniowanego lub niedostępnego elementu członkowskiego.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __unset ($ content) {echo 'Jest wywoływana automatycznie, gdy używamy metody unset () poza klasą. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Początkowo przypisane. unset ($ obj-> gender) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __sen(): Ta metoda jest wywoływana jako pierwsza podczas wykonywania serialize (). Zwraca tablicę właściwości obiektu podczas czyszczenia obiektów klasy PHP przed serializacją.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Jest wywoływana, gdy metoda serialize () jest wywoływana poza klasą. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Musi zwrócić wartość, której elementy są nazwami zwracanych właściwości. }} $ obj = new Student ('Ashok') // Początkowo przypisany. echo serialize ($ obj) echo ''?>

  • __Obudź się(): Ta metoda jest wywoływana podczas wykonywania deserializacji (). Odwrócenie pracy w celu przywrócenia właściwości obiektów i zasobów podczas wywoływania deserializacji ().
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __sleep () {echo 'Jest wywoływana, gdy metoda serialize () jest wywoływana poza klasą. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Musi zwrócić wartość, której elementy są nazwami zwracanych właściwości. } public function __wakeup () {echo 'Jest wywoływana, gdy metoda unserialize () jest wywoływana poza klasą. '$ this-> name = 2 $ this-> gender =' Male '}} $ obj = new Student (' Ashok ') // Początkowo przypisany. var_dump (serialize ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __toString (): Ta metoda zostanie wywołana podczas korzystania z metody echo do bezpośredniego drukowania obiektu. Oczekuje się, że zwróci wartość ciągu podczas używania instancji klas z instrukcjami drukowania PHP.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Początkowo przypisany. echo $ obj?>

  • __odwołać się(): Ta metoda jest zdefiniowana w klasie, która zostanie wywołana podczas próby wywołania obiektu w sposób wywołujący funkcję.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __invoke () {echo 'This is an object'}} $ obj = new Student ('Ashok') // Początkowo przypisany . $ obj ()?>

  • __set_state ($ tablica): Ta metoda jest wywoływana podczas wywoływania var_export (). Jest to metoda statyczna wywoływana podczas eksportowania tablicy właściwości obiektów i oczekuje takiej zmiennej tablicowej jako jej argumentu.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender}} $ obj = new Student ('Ashok') // Początkowo przypisany. var_export ($ obj)?>

merge sort c ++ przykład
  • __clone (): Ta metoda jest wywoływana podczas kopiowania obiektu.
name = $ name $ this-> reg = $ reg $ this-> gender = $ gender} public function __clone () {echo __METHOD __. 'klonujesz obiekt. '}} $ obj = new Student (' Ashok ') // Początkowo przypisane. $ obj2 = clone $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __Informacje debugowania(): Ta metoda jest wywoływana przez var_dump () podczas zrzucania obiektu w celu pobrania właściwości, które powinny zostać pokazane. Jeśli metoda nie jest zdefiniowana na obiekcie, zostaną wyświetlone wszystkie właściwości publiczne, chronione i prywatne.
prop = $ val} public function __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

W ten sposób dochodzimy do końca tej magicznej metody w artykule PHP. Mam nadzieję, że masz pojęcie o różnych metodach magicznych w PHP.

Sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy „ Magic Methods in PHP ”I skontaktuję się z Tobą.