В предыдущей статье мы использовали несколько специальных методов теперь рассмотрим только php специальные методы.
Эти методы ещё называют магическими методами.
Вот какие методы мы дальше рассмотрим:
1 2 3 4 5 |
__set(); __get(); __call(); __clone(); __toString(); |
Специальный метод __set($name, $value)
Данный метод вызывается когда интерпретатор языка PHP увидит что мы обращаемся к несуществующему свойству, которая ранее не была описана в классе.
Он принимает 2 параметра:
- $name – это имя несуществующего свойства.
- $value – это значение свойства.
Теперь давайте рассмотрим как он работает:
1 2 3 4 5 6 7 8 9 10 |
<? class Page { public function __set($name, $value) { echo "Вы вызвали несуществующее свойствоname} со значением {$value}."; // Вывод: Вы вызвали несуществующее свойство title со значением Hello world. } } $page = new Page(); $page->title = "Hello world"; // свойство title не была описана в нашем классе ?> |
Метод __set() используется для перехвата обращений к несуществующем свойствам класса.
Специальный метод __get($name)
Этот метод вызывается в момент вывода на экран не описанных в классе свойств.
Он принимает только один параметр:
- $name – это имя несуществующего свойства.
Давайте посмотрим как он работает:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<? class Page { public function __get($name) { echo "Попытка вывода несуществующего свойство {$name}"; // Вывод: Попытка вывода несуществующего свойство title } } $page = new Page(); $page->title = "Hello world"; echo $page->title; // попытаемся вывести свойство которые мы не определили в классе ?> |
Специальный метод __call($name, $params)
Этот метод вызывается когда интерпретатор PHP увидит что мы обращаемся к несуществующему методу.
Метод __call принимает 2 параметра:
- $name – это имя вызываемого метода.
- $params – это массив с передаваемые параметры.
Теперь пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 |
<? class Page { public function __call($name, $params) { echo "Вы вызвали метод <b>{$name}</b>. С параметрами:<br><pre>"; print_r($params); die("</pre>"); } } $page = new Page(); $page->get_page('id555', 'WebUroki.pro', 'PHP'); ?> |
Пример кода который находиться выше, отдаст такой результат:
Метод __call чаще всего используется для создания динамических методов, не описывая их.
Специальный метод __clone мы рассмотрели в одной из предыдущих статей.
Специальный метод __toString()
Данный метод вызывается при попытке вывести на экран объект.
Важное замечание для данного метода: в нём нельзя вывести никакие данные, он должен только возвращать результат.
В данной статье мы рассмотрели важнейшие магические методы, но не все.
Источник вдохновения webformyself.