Классы и объекты
PHP Manual

Журнал изменений ООП

Изменения модели ООП в PHP 5 описаны в этом разделе. Описания и другие примечания, касающиеся этих возможностей, описаны в рамках документации ООП PHP5

Версия Описание
5.4.0 Изменено: Если абстрактный класс определяет сигнатуру для конструктора, то она будет принудительно применяться.
5.3.3 Изменено: Методы с тем же именем, что и последний элемент пространства имен класса больше не будет рассматриваться как конструктор. Это изменение не будет влиять на классы, не входящие в пространства имен.
5.3.0 Изменено: Больше не требуется, чтобы классы, реализующие интерфейсы с методами, которые имеют значения по умолчанию в прототипе, соответствовали значениям по умолчанию в интерфейсе.
5.3.0 Изменено: Теперь стало возможным ссылаться на класс, используя переменную (например, echo $classname::constant;). Значение переменной не может быть ключевым словом (например, self, parent или static).
5.3.0 Изменено: Ошибка E_WARNING происходит, если магические перегруженные методы задекларированы как статические. Это также усиливает требование, что эти методы должны быть публичными.
5.3.0 Изменено: До 5.3.0, исключения в функции __autoload() не могли быть перехвачены в блоке catch и приводили к фатальной ошибке. Сейчас исключения в функции __autoload могут быть перехвачены в блоке catch, но с одной оговоркой. Если перехватывается пользовательское исключение, то класс, обрабатывающий это исключение, должен быть доступен. Функция __autoload может быть использована рекурсивно для автозагрузки пользовательского класса обработки исключения.
5.3.0 Добавлено: Метод __callStatic.
5.3.0 Добавлено: Поддержка heredoc и nowdoc для констант и определений свойств класса. Примечание: Значение heredoc должны следовать тем же правилам, что и строки в двойных кавычках (например, без переменных внутри).
5.3.0 Добавлено: Позднее статическое связывание.
5.3.0 Добавлено: метод __invoke().
5.2.0 Изменено: Метод __toString() вызывался только когда он напрямую комбинировался с echo или print. Сейчас он вызывается в любом контексте строки (например, в printf() с модификатором %s), но не в других типах контекста (например, с модификатором %d). С PHP 5.2.0, преобразование объектов без метода __toString в строку выдает ошибку уровня E_RECOVERABLE_ERROR.
5.1.3 Изменено: В предыдущих версиях PHP 5 использование var считалось устаревшим и выдавало ошибку E_STRICT. Сейчас это не считается устаревшим, поэтому ошибка больше не выдается.
5.1.0 Изменено: Статический метод __set_state() теперь вызывается для классов, экспортируемых функцией var_export().
5.1.0 Добавлены: методы __isset() и __unset().


Классы и объекты
PHP Manual