Так получилось что в ООП функции называют — методами а переменные — свойствами. В PHP5 существует несколько полезных методов несущих в себе «магический» функционал о них сейчас и пойдет речь.
Все методы начинающиеся с __ PHP считает «магическими».
__construct() — метод конструктор, если он объявлен в классе то он будет вызываться при каждом создании объекта. Может принимать одно или несколько свойств.
__destruct() — деструктор вызывается при освобождении всех ссылок на объект в котором он находится или по завершению работы скрипта. Не может принимать свойства.
__get() — будет выполнен при чтении данных из недоступных свойств.
__set() — будет выполнен при записи данных в недоступные свойства.
__isset() будет выполнен при использовании isset() или empty() на недоступных свойствах.
__unset() будет выполнен при вызове unset() на недоступном свойстве.
__toString() — позволяет написать реакцию класса при возведении его в строку.
__invoke() — вызывается когда скрипт выполняет объект как функцию.
__clone() — клонирует объект.
Читать далее