PHP

Почему в качестве колбеков в PHP передаются методы (функции), а не объекты?

В Java передаётся объект класса или интерфейса, содержащий метод, а в пыхе придумали засовывать прямо метод.
Потому что ява это древнее зло. В C# например там уже давно используется event-drive model когда при помощи делегатов подписываешся на событие и забываешь про мастурбацию с call-back адом. Ну а в php методы вроде как callable тип имеют. То есть опять же я не очень понимаю в вашем php, то в js там функция это обьект, поэтому нету смысла городить обьект, что бы передать функцию.
Сергей Курин
Сергей Курин
74 422
Лучший ответ
Потому, что Java - это только ООП и ничего, кроме ООП.

А ООП в PHP - всего лишь один из механизмов. И в качестве callback может выступать не только метод, но и обычная именованная функция, и замыкание, и стрелочная функция.
Михаил Барабанов Получается PHP типа круче Java?
В JS тоже метод. А в C++ есть просто лямбда и есть std::function, которая может хранить как лямбду, так и функцию (и поэтому надо юзать std::function), но никто не создает свои объекты листенеров.

Поэтому вопрос должен звучать иначе: а в Java зачем нужны объекты листенеров?
Dasha Stas
Dasha Stas
92 464
Михаил Барабанов Потому что в Java метод это орган, являющийся частью класса. Нельзя его отрубить и куда-то передать.
Основная причина 15 лет разницы.
За это время изменилась идеология в философии ООП.
(идея + простая формальная логика использования идеи = идеология)
Когда сформирована идеология она формирует философию которая продолжает развиваться (эволюционировать) и по пути формирует наиболее удобные правила подходы и парадигмы.

В джаве философия - все есть описанные классы и все сущее существует только инстанцированием экземпляров ранее описанных классов.

В пхп пришли новые веяния функционального подхода о разделении объектной модели данных и функционирующих частей приложения. Не тянущих за собой хвост наследования зависимостей и побочных эффектов.

Просто это разные точки зрения на один и тот же вопрос из разных доминирующих идеологий.
https://coub.com/view/1955xv
Иван Шаталов
Иван Шаталов
12 593