Задать вопрос
  • Как реализовывается паттерн Middleware в контексте php?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Да все просто:

    1) Простой пример

    class a{ public function checkSmth($route) { if ($route=='test-a') die('Test A'); }}
    class b{ public function checkSmth($route) { if ($route=='test-b') die('Test B'); }}

    $middleware = ['a','b'];

    $route = 'test-a'; // например тут будет $_SERVER['QUERY_STRING']

    foreach($middleware as $m) (new $m)->checkSmth($route);

    т.е. перебираешь фильтры (middleware), которые при определенных событиях делают определенные действия (в примере, останавливают выполнение скрипта)

    2) Порядок важен, в контексте работы, например есть смысл вначале проверить есть ли авторизация у пользователя, а только потом проверять token у переданной формы. Если нет такого требования, то и порядок не важен, например если редиректить женщин и стариков, в другой раздел, то вполне можно в одном middleware проверять возраст, а в другом пол, при этом порядок не важен.

    3) Реализовывать можно по-разному, ориентируясь на свои требования. Чаще всего, middleware это набор объектов которые возвращает true для is_callable и выполняют какие либо действия по анализу переданных в них данных.

    Как-то так..
    Ответ написан
    Комментировать