Как я могу использовать параметры запроса в моем приложении Mezzio до того, как обработчик был инициализирован?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу использовать параметры запроса в моем приложении Mezzio до того, как обработчик был инициализирован?

Сообщение Anonymous »

Я создаю приложение Mezzio, которое обрабатывает некоторые пост-запросы и использует некоторые данные из тела, чтобы получить некоторые конфигурации от DB (допустим, я получаю идентификатор пользователя с некоторым веб-крюком, а затем от него получите конфигурации, которые мне нужны использовать в моем приложении из конкретной строки в базе данных). Все эти конфигурации необходимы для инициализации различных объектов класса для работы при обработке запроса. Обычно, если бы мне не понадобились эти данные из запроса, я бы сделал что -то подобное: < /p>

Код: Выделить всё

class WebhookHandlerFactory
{ // $config['client'] is hardcoded in the .env file in this case and then put into ConfigProvider
protected ContainerInterface $container;

public function __invoke(ContainerInterface $container): RequestHandlerInterface
{
$this->container = $container;
$config = $this->getConfig();
$client = (new SomeClient($config['client']))->getClient();
$controller = (new SomeControllerFactory)($container);

return new WebhookHandler($controller, $config, $client);
}

protected function getConfig(): ArrayObject
{
$config = $this->container->get('config');
// here I use my hardcoded data to find something in the DB and then put it into $config

return $config;
}
< /code>
Проблема в том, что я не могу получить свое тело запроса на заводе. Класс обработчика в __construct, а затем метод вызовов, как это: < /p>
public function __construct(
ContainerInterface $container,
CreateController $controller,
ArrayObject $config
){
$this->container = $container;
$this->createController = $createController;
$this->config = $config;

$config = $this->getConfig();
$client = (new SomeClient($config['client']))->getClient();

$this->handler = new WebhookHandler($this->controller, $config, $client);
}

public function handle(ServerRequestInterface $request)
{
return $this->handler->handle($request);
}
< /code>
Но мой файл routs.php теперь выглядит довольно уродливо, заставляя меня думать, что я делаю что -то не так. < /p>
return static function (Application $app): void
{
$app->post('/', App\Handler\WebhookHandlerFactory::class);
Мой вопрос заключается в том, каков более правильный способ получить данные моего запроса перед инициализацией обработчика и какие шаблоны мне лучше использовать

Подробнее здесь: https://stackoverflow.com/questions/791 ... nitialized
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»