Использование "parent ::" или "self ::" в call_user_func () в PHP 5.x

http://php.net/manual/en/function.call-user-func.php

В разделе «Журнал изменений» говорится:

"The interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static."

  1. Это статический вызов нестатического метода и выдача предупреждения ip PHP 5.x?
  2. Если да, то как мы узнаем, что вызываемый нами метод нестатичен? Мы предполагаем это.
  3. В этом контексте есть только два типа методов - статические и нестатические, правильно?

Меня это тоже всегда беспокоило. Для меня использование :: подразумевает, что это должен быть статический метод или переменная. Итак, я стараюсь просто усилить этот правило в моем собственном коде, не запутывая его. Но в более сложных объектах ... это становится рискованно.

IncredibleHat 30.03.2018 19:35

Это для PHP5.3+. Я никогда не видел необходимости и в ->, и в ::. Почему мы не можем просто полагаться на определение метода и использовать Class->foo() или $Obj->bar(), это правильная функция.

ArtisticPhoenix 30.03.2018 19:53

Он просто говорит, что до 5.3 вызов чего-то вроде parent::foo() с call_user_func() вызывал предупреждение, потому что оператор разрешения области видимости :: интерпретировался как статический.

code-kobold 30.03.2018 20:04

@ code-kobold - Всегда можно предположить, что целевой метод нестатичен (почему / как?)? И вызов нестатического метода статически генерирует предупреждение до php 5.3 (я имею в виду, это то, о чем идет речь)?

user9098366 30.03.2018 20:18

Вы спрашиваете, было ли это поведение другим в php 5.x; в отличие от php 7? В частности, в php <5.3?

yivi 30.03.2018 20:18

@yivi - Я знаю, что это не относится к PHP 7. Это можно рассматривать как «ошибку прошлого», но я хочу понять это. Я изучаю PHP.

user9098366 30.03.2018 20:19

Хорошо, но вы спрашиваете о 5.x, но я предполагаю, что вас особенно беспокоит php <5.3, верно?

yivi 30.03.2018 20:23

@yivi - Нет, совсем нет. Любая версия, к которой это относится. Я просто хочу понять этот текст (и двигаться дальше). Я буду использовать PHP 7, когда начну писать код.

user9098366 30.03.2018 20:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
9
89
0

Другие вопросы по теме