Список магических методов PHP:
__construct
__destruct
__call
__callStatic
__get
__set
__isset
__unset
__sleep
__wakeup
__toString
__invoke
__set_state
__clone
__debugInfo
__construct — конструктор, этот метод вызывается при создании объекта.
Пример:
<?php
class MyClass {
function __construct() {
print "Конструктор класса MyClass\n";
}
}
new MyClass(); // выведет Конструктор класса MyClass
<?php
class MyClass {
private $variable;
public function __construct($variable) {
$this->variable = $variable;
}
}
// При инициализации объекта, "I'm inside" с помощью конструктора
// присвоится приватному свойству private $variable
new MyClass('I'm inside');
__destruct — деструктор, этот метод вызывается при удалении объекта.
__call() — запускается при вызове недоступных методов в объекте. Т.е. если вы обращаетесь к методу объекта, которого не существует, то запускается метод __call()
__callStatic — запускается при вызове недоступных методов у класса. Т.е. если вы обращаетесь к статическому методу класса, а его не существует, то вызывается метод __callStatic().
__get — запускается при попытке чтения несуществующих, приватных или защищенных свойств объекта.
__set — запускается при попытке записи данных в несуществующие, приватные или защищенные свойства объекта.
__isset — будет запущен, при попытке использовать метод isset()(проверяет существует ли переменная или свойство), на несуществующем, защищенном или приватном свойстве объекта.
__unset — запускается при попытке использования unset(), на несуществующем, защищенном или приватном свойстве объекта.
__sleep — данный магический метод запускается до любой операции сериализации. может использоваться, например для очистки объекта.
__wakeup — этот магический метод запускается до выполнения функции unserialize(). Используется для восстановления различных ресурсов, которые может иметь объект.
__toString — этот магический метод делает следующее — если объект попытаются использовать как строку, то запустится метод __toString.
Пример:
<?php
// Объявление класса
class MyClass
{
public $variable;
public function __construct($variable)
{
$this->variable= $variable;
}
public function __toString()
{
return $this->variable;
}
}
$object = new MyClass('Hi from object');
echo $object ; // пытаемся ECHO-м вывести на экран объект, в результате
// запускается магический метод __toString, который возвращает строку
// "Hi from object", и выводится на экран "Hi from object".
__invoke — магический метод, вызывается, если объект пытаются вызвать как функцию.
Пример:
<?php
class MyClass
{
public function __invoke($var)
{
var_dump($var);
}
}
$object = new MyClass;
$object(60); // т.к. объект пытаются использовать как функцию,
// то запускается магический метод __invoke
__set_state — этот магический метод покрыт ореолом тайны, но его не просто так разместили сразу после магического метода __toString, т.к. метод их запуска очень похож. Метод __toString запускается, если объект пытаются передать в функцию ECHO — (пример — echo($itObject);), а магический метод __set_state запускается если Ваш объект пытаются передать в функцию VAR_EXPORT (пример — var_export($itObject);). Область применения метода __set_state довольно обширна, например для отладки кода.
__clone — магический метод, срабатывает после завершения клонирования объекта.
$clone_your_object = clone $your_object; //После такого клонирования,
//если определен магический метод __clone, он будет запущен.
__debugInfo — этот метод запускается, если в функцию var_dump(), передать объект. Если у объекта, магический метод __debugInfo не определен, то будут показаны все свойства объекта.