Специальные методы в php

В предыдущей статье мы использовали несколько специальных методов теперь рассмотрим только php специальные методы.

Эти методы ещё называют магическими методами.

Вот какие методы мы дальше рассмотрим:

__set();
__get();
__call();
__clone();
__toString();

Специальный метод __set($name, $value)

Данный метод вызывается когда интерпретатор языка PHP увидит что мы обращаемся к несуществующему свойству, которая ранее не была описана в классе.

Он принимает 2 параметра:

  1. $name – это имя несуществующего свойства.
  2. $value – это значение свойства.

Теперь давайте рассмотрим как он работает:

<?
class Page {
 public function __set($name, $value) {
  echo "Вы вызвали несуществующее свойствоname} со значением {$value}."; // Вывод: Вы вызвали несуществующее свойство title со значением Hello world.
 }
}

$page = new Page();
$page->title = "Hello world"; // свойство title не была описана в нашем классе
?>

Метод __set() используется для перехвата обращений к несуществующем свойствам класса.

Специальный метод __get($name)

Этот метод вызывается в момент вывода на экран не описанных в классе свойств.

Он принимает только один параметр:

  1. $name – это имя несуществующего свойства.

Давайте посмотрим как он работает:

<?
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 параметра:

  1. $name – это имя вызываемого метода.
  2. $params – это массив с передаваемые параметры.

Теперь пример кода:

<?
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.

Valeriu :