Задать вопрос

Почему интерпритатор PHP не ругается при вызове не статической функции без создания экземпляра класса?

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

calss A{
     public function b(){
         return 1;
     }
}
echo A::b();


Код успешно вернул 1.

Подскажите, кто знает: как это работает? В чем тогда разница между статическим и не статическим методом? Или это очередная попытка PHP добавить "удобства" программисту и интерпритатор все равно признает метод статическим, если вызывать его как статический?
  • Вопрос задан
  • 2506 просмотров
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
disc
@disc
веб-разработчик
Если включить отображение ошибок E_ALL, то вы увидите:
Strict standards: Non-static method A::b() should not be called statically

E_STRICT - это не столько ошибки, сколько советы по правильному кодированию, для предотвращения последующей несовместимости скрипта
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trerums
@trerums
А вы уверены что должно быть runtime error а не notice/warning?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽