PHP
Почему в качестве колбеков в PHP передаются методы (функции), а не объекты?
В Java передаётся объект класса или интерфейса, содержащий метод, а в пыхе придумали засовывать прямо метод.
Потому что ява это древнее зло. В C# например там уже давно используется event-drive model когда при помощи делегатов подписываешся на событие и забываешь про мастурбацию с call-back адом. Ну а в php методы вроде как callable тип имеют. То есть опять же я не очень понимаю в вашем php, то в js там функция это обьект, поэтому нету смысла городить обьект, что бы передать функцию.
Потому, что Java - это только ООП и ничего, кроме ООП.
А ООП в PHP - всего лишь один из механизмов. И в качестве callback может выступать не только метод, но и обычная именованная функция, и замыкание, и стрелочная функция.
А ООП в PHP - всего лишь один из механизмов. И в качестве callback может выступать не только метод, но и обычная именованная функция, и замыкание, и стрелочная функция.
Михаил Барабанов
Получается PHP типа круче Java?
В JS тоже метод. А в C++ есть просто лямбда и есть std::function, которая может хранить как лямбду, так и функцию (и поэтому надо юзать std::function), но никто не создает свои объекты листенеров.
Поэтому вопрос должен звучать иначе: а в Java зачем нужны объекты листенеров?
Поэтому вопрос должен звучать иначе: а в Java зачем нужны объекты листенеров?
Михаил Барабанов
Потому что в Java метод это орган, являющийся частью класса. Нельзя его отрубить и куда-то передать.
Основная причина 15 лет разницы.
За это время изменилась идеология в философии ООП.
(идея + простая формальная логика использования идеи = идеология)
Когда сформирована идеология она формирует философию которая продолжает развиваться (эволюционировать) и по пути формирует наиболее удобные правила подходы и парадигмы.
В джаве философия - все есть описанные классы и все сущее существует только инстанцированием экземпляров ранее описанных классов.
В пхп пришли новые веяния функционального подхода о разделении объектной модели данных и функционирующих частей приложения. Не тянущих за собой хвост наследования зависимостей и побочных эффектов.
Просто это разные точки зрения на один и тот же вопрос из разных доминирующих идеологий.
https://coub.com/view/1955xv
За это время изменилась идеология в философии ООП.
(идея + простая формальная логика использования идеи = идеология)
Когда сформирована идеология она формирует философию которая продолжает развиваться (эволюционировать) и по пути формирует наиболее удобные правила подходы и парадигмы.
В джаве философия - все есть описанные классы и все сущее существует только инстанцированием экземпляров ранее описанных классов.
В пхп пришли новые веяния функционального подхода о разделении объектной модели данных и функционирующих частей приложения. Не тянущих за собой хвост наследования зависимостей и побочных эффектов.
Просто это разные точки зрения на один и тот же вопрос из разных доминирующих идеологий.
https://coub.com/view/1955xv
Похожие вопросы
- помогите с php не получается функция
- Почему браузер отображает сам код php а не готовый ответ "5"?
- Почему многие проявляют ненависть к PHP?
- Для чего нужны функции pack () и unpack () в PHP ?
- Если в PHP нет перегрузки методов, то как же быть?
- Задачка по PHP (Создание функции)
- Помогите с php кодом, плиз) хотел функцию транслитерации написать, только ошибка выходит и все :(
- Есть ли какой-нибудь тайм аут на работу времени функции в php?
- В чём смысл функции chop в php?
- PHP. Почему нельзя применять функцию count() к строкам? Ведь строка это тот же массив