Size: a a a

2020 November 05

RD

Roman Dykyi in PHP
чтобы все в 1 методе не говодить а разбить по функциям
источник

RD

Roman Dykyi in PHP
ладно оставлю как есть лучше
источник

VM

Volodymyr Melko in PHP
Roman Dykyi
ладно оставлю как есть лучше
ну если твой хендлер может передать юзера как аргумент, то проблем никаких =)
источник

RD

Roman Dykyi in PHP
да я вот думаю добавлю юзера а потом еще чтото нада и handler будет раздуватся. пусть лучше не знает о зависимостях а принимает колбек (так более универсально получится)
источник

VM

Volodymyr Melko in PHP
ну а так то в пыхе нет возможности описать колбек вместе с его аргументами. ты не можешь затребовать в аргумент handler какойто callable который принимает определнные аргументы.

но ты можешь затребовать в качестве аргумента handler некий интерфейс с методом

public function handleRequest(Request $request, User $user,//and list of other arguments)
источник

VM

Volodymyr Melko in PHP
или же сделать что-то похожее на parameter-bag с методами has(string $key): bool и get(string $key, mixed $default): mixed

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

RD

Roman Dykyi in PHP
да я понял суть, но пока оставлю так. спасибо за совет
источник

VM

Volodymyr Melko in PHP
Roman Dykyi
да я понял суть, но пока оставлю так. спасибо за совет
если ты не хочешь все замыкания держать в одном месте, то т можешь их разложить по разным сервисам, которые вернут замыкание
типа RequestHandlerProviderInterface::getRequestHandler(): callable
источник

VM

Volodymyr Melko in PHP
у тебя будет много таких классиков, который возвращают замыкание
источник

A

Aleksandr Khristenko in PHP
Roman Dykyi
вот и я колупаюсь с этим и не могу красиво сделать
global $user; =)
А если серьезно, то не получится. Неанонимные функции же создаются на момент компиляции пхп в байткод.
источник

RD

Roman Dykyi in PHP
Подумаю над интерфейсом, вроде норм идея. Спасибо
источник

KN

Kirill Nesmeyanov in PHP
Aleksandr Khristenko
global $user; =)
А если серьезно, то не получится. Неанонимные функции же создаются на момент компиляции пхп в байткод.
и да, и нет
источник

KN

Kirill Nesmeyanov in PHP
зависит от того, где именно и как они создаются
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
зависит от того, где именно и как они создаются
А можно развернуть эту мысль?
источник

KN

Kirill Nesmeyanov in PHP
в момент компиляции только если они в корне
источник

KN

Kirill Nesmeyanov in PHP
если внутри ифов или где ещё, то в рантайме
источник

KN

Kirill Nesmeyanov in PHP
тоже самое и с классами, к слову)
источник

KN

Kirill Nesmeyanov in PHP

return 42:
function a() {}


момент компиляции, а значит функция будет объявлена, невзирая на ретурн
источник

KN

Kirill Nesmeyanov in PHP
а если её в if(true) поместить, то не будет
источник

KN

Kirill Nesmeyanov in PHP
ну это уже я капитаню
источник