Магические методы: конструктор и деструктор онлайн урок.


В этом уроке мы расскажем о некоторых, так называемых, магических методах.

Магические методы - это методы, которые вызываются неявно. А именно - они вызываются автоматически, при некоторых условиях.

Конструкторы и деструкторы - это магические методы, которые вызываются при создании объекта и удалении его из памяти соответственно. Рассмотрим эти методы детальнее.

Конструктор - это магический метод, который вызывается при каждом создании нового экземпляра класса. Для того, чтобы определить этот метод, необходимо создать метод класса с названием __construct. Он может зависеть от аргументов как и любая другая функция:

class A
{
public function __construct()
{
echo 'Object created ';
}
}

$a1 = new A; // output: Object created
$a2 = new A(); // output: Object created


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

class B
{
public function __construct($str)
{
echo $str;
}
}
$b = new B('Hello');


Деструктор - это метод, который будет вызван при удалении объекта из памяти. Объект удаляется из памяти, когда скрипт закончит работу. Для реализации деструктора необходимо создать метод с названием __destruct

class C
{
public function __construct($str)
{
echo $str;
}

public function __destruct()
{
die(' Goodbye');
}

}

$c = new C('Hello'); // output: Hello


В данном случае, при удалении объекта из памяти будет выведена строка на экран.



Замечание. Если объявить конструктор как private или метод, то попытка создать экземпляр класса вне самого класса спровоцирует fatal error и работа скрипта будет остановлена.

Проверьте свои знания
В класс Car из предыдущих заданий добавить конструктор, который выводит сообщение Car created при создании нового экземпляра класса. Создать контактную форму. Создать скрипт обработчик контактной формы. Создать класс ContactForm со свойствами, значения которых совпадают с названиями полей формы. Создать экземпляр класса ContactForm по массиву $_POST при отправке формы.