Что такое магические методы в PHP? и как их реализовать?



Эта статья предоставит вам подробные и всесторонние знания о различных магических методах в PHP с примерами.

В специальные функции могут быть определены таким образом, чтобы они могли вызываться автоматически и не требовали вызова каких-либо функций для выполнения кода внутри этих функций. Эта функция доступна в специальном методе, известном как магические методы. В этой статье мы обсудим основные магические методы в PHP.

Что такое магические методы в PHP?

Методы, начинающиеся с двух знаков подчеркивания (__), в PHP обычно называются магическими методами. Имена этих методов ограничены некоторым списком PHP поддерживаемые ключевые слова, которые зарезервированы. Поэтому никакая функция не должна определяться с именем магических методов PHP.





Magic-Methods-in-PHP

Обычно эти функции должны определяться пользователем, и нет необходимости вызывать их явно.



Список магических методов в PHP

  • __construct ()
  • __destruct ()
  • __call ($ fun, $ arg)
  • __callStatic ($ fun, $ arg)
  • __get ($ свойство)
  • __set ($ свойство, $ значение)
  • __isset ($ content)
  • __unset ($ content)
  • __спать()
  • __Проснись()
  • __нанизывать()
  • __invoke ()
  • __set_state ($ массив)
  • __clone ()
  • __debugInfo ()
  • __construct (): Это метод, который вызывается автоматически после создания объекта. Здесь можно определить любое количество аргументов, которые будут передаваться при создании объектов.
class sample {function user_def () {echo 'определяемый пользователем конструктор'} function __construct () {echo 'предопределенный конструктор'}} $ obj = new sample ()?>

Программирование сокетов tcp на Java
  • __destruct (): Деструктор - это обычная функция объектно-ориентированного языка, которая запускается, как только нет других ссылок на конкретный объект.
user_def () // проверка объекта уничтожен или нет echo is_object ($ obj). ' '?>

  • __call ($ fun, $ arg): Этот метод вызывается при вызове неопределенного или недоступного метода. Это означает, что он вызывается, когда для объекта вызывается неопределенный или недоступный метод.
run ('учитель') // Если в объекте вызывается несуществующий метод, то метод __call () будет вызван автоматически. $ obj-> eat ('ashok', 'orange') $ obj-> user_define ()?>



  • __callStatic ($ fun, $ arg): Этот метод вызывается, когда статическим образом вызывается неопределенный или недоступный метод.
user_define ()?>

  • __get ($ свойство): Этот метод используется для получения значений свойств класса, динамически создаваемых перегрузкой свойств PHP.
name = $ name $ this-> reg = $ reg} публичная функция __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) // Создание экземпляра объекта с помощью класса Student и присвоение начальных значений к свойствам с конструктором. echo 'Имя'. $ obj-> имя. '' // При обращении к частному свойству автоматически вызывается метод __get (), поэтому мы можем получить значение свойства косвенно. эхо 'reg :'. $ obj-> reg. '' // Метод __get () вызывается автоматически , и возвращает разные значения в зависимости от самого объекта. ?>

  • __set ($ свойство, $ значение): Этот метод используется для установки значений свойств класса, динамически создаваемых перегрузкой свойств PHP.
name = $ name $ this-> reg = $ reg} public function __set ($ property, $ value) {if ($ property == 'reg') $ value $ property = $ value public function fun () {echo 'My name: '. $ this-> name.', Мой регистрационный номер: '. $ this-> reg}} $ obj = new Student (' Ashok ', 40) // Обратите внимание, что начальное значение будет изменено кодом ниже. $ obj-> name = 'Sushma' // Свойство 'name' будет успешно присвоено. Если метода __set () нет, программа выдаст исключение. $ obj-> age = 16 // Свойство reg будет присвоено успешно. $ obj-> reg = 160 // 160 - недопустимое значение, поэтому его нельзя присвоить. $ obj-> веселье ()?>

  • __isset ($ content); Этот метод будет вызываться при вызове isset () или empty () для неопределенного или недоступного члена. Он вызывается автоматически при проверке того, установлено ли необходимое перегруженное свойство или нет, с помощью функции PHP isset ().
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол} публичная функция __isset ($ content) {echo 'Свойство {$ content} является закрытым , метод __isset () вызывается автоматически. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Первоначально назначено. echo isset ($ obj-> пол), '' echo isset ($ obj-> name), '' echo isset ($ obj-> reg), ''?>

  • __unset ($ content): Этот метод будет вызываться при вызове reset () для неопределенного или недоступного члена.
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол} публичная функция __unset ($ content) {echo 'Она вызывается автоматически, когда мы используем метод unset () вне класса. 'echo isset ($ this -> $ content)}} $ obj = new Student (' Ashok ', 30) // Первоначально назначено. unset ($ obj-> пол) unset ($ obj-> name) unset ($ obj-> reg)?>

  • __спать(): Этот метод вызывается первым при выполнении serialize (). Он возвращает массив свойств объекта при очистке объектов класса PHP перед сериализацией.
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол} публичная функция __sleep () {echo 'Она вызывается, когда метод serialize () вызывается вне класса. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Он должен возвращать значение, элементами которого являются имена возвращаемых свойств. }} $ obj = new Student ('Ashok') // Первоначально назначено. эхо сериализовать ($ obj) эхо ''?>

какой шеф-повар в DevOps
  • __Проснись(): Этот метод вызывается во время выполнения deserialization (). Это отменит работу по восстановлению свойств и ресурсов объектов при вызове deserialization ().
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол} публичная функция __sleep () {echo 'Она вызывается, когда метод serialize () вызывается вне класса. '$ this-> name = base64_encode ($ this-> name) return array (' name ',' reg ') // Он должен возвращать значение, элементами которого являются имена возвращаемых свойств. } публичная функция __wakeup () {echo 'Она вызывается, когда метод unserialize () вызывается вне класса. '$ this-> name = 2 $ this-> пол =' Male '}} $ obj = new Student (' Ashok ') // Первоначально назначено. var_dump (сериализовать ($ obj)) var_dump (unserialize (serialize ($ obj)))?>

  • __нанизывать(): Этот метод будет вызываться при использовании метода echo для прямой печати объекта. Ожидается, что при использовании экземпляров класса с операторами печати PHP будет возвращено строковое значение.
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол} public function __toString () {return 'go go go'}} $ obj = new Student ('Ashok') // Первоначально назначено. эхо $ obj?>

  • __invoke (): Этот метод определен в классе, который будет вызываться при попытке вызвать объект способом вызова функции.
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол} публичная функция __invoke () {echo 'Это объект'}} $ obj = new Student ('Ashok') // Первоначально назначено . $ obj ()?>

  • __set_state ($ массив): Этот метод вызывается при вызове var_export (). Это статический метод, который вызывается при экспорте массива свойств объекта и ожидает такую ​​переменную массива в качестве аргумента.
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол}} $ obj = new Student ('Ashok') // Первоначально назначено. var_export ($ obj)?>

  • __clone (): Этот метод вызывается при копировании объекта.
name = $ name $ this-> reg = $ reg $ this-> пол = $ пол} публичная функция __clone () {echo __METHOD __. 'вы клонируете объект. '}} $ obj = new Student (' Ashok ') // Первоначально назначено. $ obj2 = clone $ obj var_dump ('object1:') var_dump ($ obj) echo '' var_dump ('object2:') var_dump ($ obj2)?>

  • __debugInfo (): Этот метод вызывается функцией var_dump () при сбросе объекта, чтобы получить свойства, которые должны отображаться. Если метод не определен для объекта, будут показаны все общедоступные, защищенные и частные свойства.
prop = $ val} публичная функция __debugInfo () {return ['propSquared' => $ this-> prop ** 2,]}} var_dump (new Sample (22))?>

На этом мы подошли к концу этого волшебного метода в статье PHP. Надеюсь, вы получили представление о различных магических методах PHP.

всплывающее сообщение сценария Java

Проверьте от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру.

Есть вопрос к нам? Пожалуйста, укажите это в комментариях к ' Магические методы в PHP »И я вернусь к вам.