Изменения модели ООП в 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(). |