«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему в PHP 5.2 запрещены методы абстрактного статического класса?

Почему в PHP 5.2 запрещены методы абстрактного статического класса?

Опубликовано 14 ноября 2024 г.
Просматривать:920

Why Did PHP 5.2 Disallow Abstract Static Class Methods?

Строгий режим PHP 5.2: почему запрещены методы абстрактного статического класса?

В PHP 5.2 включение строгих предупреждений может вызвать знакомое предупреждение : «Статическая функция не должна быть абстрактной». Это предупреждение связано с изменением, внесенным в PHP 5.2, которое запрещает абстрактные статические методы класса.

Причина: исторический надзор

В PHP 5.2 изначально отсутствовали поздние статические привязки, делая абстрактные статические функции бесполезными. Поскольку ключевое слово self в абстрактных статических методах относилось к родительскому классу, а не к дочернему классу, для которого был вызван метод, такие методы не имели практического значения. Таким образом, предупреждение было предназначено для выявления и предотвращения потенциальных ошибок кодирования.

Поздние статические привязки и ошибочное обоснование

В PHP 5.3 были введены поздние статические привязки, позволяющие статические методы дочерних классов, которые будут вызываться из родительских методов с использованием ключевого слова static. Это устранило технический барьер, делавший абстрактные статические методы бесполезными. Однако в PHP 5.2 предупреждение сохранилось на основании слабого аргумента: раскрытие абстрактных статических методов может привести к поломке общедоступных методов.

Ложное восприятие

Оправдание для предупреждение было ошибочным. Абстрактные статические методы могут сосуществовать с поздними статическими привязками, обеспечивая допустимый вариант использования для вызова статических методов дочерних классов из родительских методов.

Замешательство и неточный ответ

A Отчет об ошибке PHP с просьбой удалить предупреждение из-за добавления поздних статических привязок получил пренебрежительный ответ от Расмуса Лердорфа. Он ошибочно заявил, что абстрактные статические методы с поздними статическими привязками были функциональными, что было неверным, поскольку они все равно вызывали предупреждение. Эта путаница и отсутствие ясности привели к тому, что предупреждение не исчезло.

Решение в PHP 7

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3