powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как в классе php выполнить анонимную функцию которая содержится в свойстве
7 сообщений из 7, страница 1 из 1
Как в классе php выполнить анонимную функцию которая содержится в свойстве
    #39543025
Рома11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: php
1.
2.
3.
4.
class MyClass(){
// У данного класса имеется свойство, например Item которое является анонимной функцией
// Как выполнить её в этом классе
}
...
Рейтинг: 0 / 0
Как в классе php выполнить анонимную функцию которая содержится в свойстве
    #39543089
Sidmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как и любую анонимную функцию

Пример:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class Example
{
    /**
     * @var Closure
     */
    private $closure;

    public function __construct()
    {
        $this->closure = function () {
            echo 'example print';
        };
    }

    public function runClosure()
    {
        $closure = $this->closure;
        $closure();
    }
}

(new Example())->runClosure();
...
Рейтинг: 0 / 0
Как в классе php выполнить анонимную функцию которая содержится в свойстве
    #39543579
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рома11,

Мсье знает толк в извращениях )
А почему нельзя сделать анонимную функцию именованной в том же классе, на минуточку?
...
Рейтинг: 0 / 0
Как в классе php выполнить анонимную функцию которая содержится в свойстве
    #39543636
Sidmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouseА почему нельзя сделать анонимную функцию именованной в том же классе, на минуточку?

Потому что довольно часто есть необходимость выполнить какое-то callback действие по факту совершения предыдущего действия, особенно если действия различны и завязаны на отдельные бизнес правила.
Именно поэтому (а не просто так из экзестенциального интереса, как можно предположить из вашего поста) были придуманы замыкания и паттерн стратегия.
...
Рейтинг: 0 / 0
Как в классе php выполнить анонимную функцию которая содержится в свойстве
    #39543663
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sidmal,

SidmalПотому что довольно часто есть необходимость выполнить какое-то callback действие
Это Listener.
Sidmalпо факту совершения предыдущего действия
А это Event.

И если при этом, как вы изволили выразиться, "действия различны и завязаны на отдельные бизнес правила", то им уж точняк нечего делать в одном классе, да еще и в замыканиях. )))
...
Рейтинг: 0 / 0
Как в классе php выполнить анонимную функцию которая содержится в свойстве
    #39543678
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouse,

где вы тут увидели замыкание то?
...
Рейтинг: 0 / 0
Как в классе php выполнить анонимную функцию которая содержится в свойстве
    #39543770
Sidmal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouseЭто Listener.
А это Event.


Не люблю вступать в полемику, но спрошу, а вы смотрели как устроены библиотеки реализующие Event и Event Listener интерфейс? И в качестве же ответа самому себе предположу, что врятли, т.к. иначе бы не писали подобного.
Для примера приведу наверное наиболее распространенную в мире PHP библиотеку symfony/event-dispatcher . Если вы почитаете ее исходный код, то я думаю вы без труда найдете вызовы анонимных функций, передаваемых в качестве параметра метода.

MikkiMouseИ если при этом, как вы изволили выразиться, "действия различны и завязаны на отдельные бизнес правила", то им уж точняк нечего делать в одном классе, да еще и в замыканиях. )))


А если вы сверху хотите спроектировать масштабируемую систему, а не лапшу из listeners, то тут вам на помощь и придет патерн Стратегия
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как в классе php выполнить анонимную функцию которая содержится в свойстве
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]