Хуки в классе Hook

Названия

Для удобства восприятия, названия хуков формируются по следующему принципу:
Пример: A_beforeGetStandardViews
A - литера обозначающая часть сайта(A - административная backend, C - клиентская, frontend)
before - выполнение коллбека перед действием (before - перед, after - после, может отсутствовать в определённых случаях)
GetStandardViews - название действия, предпочтительно используются названия функции где активикуется коллбек

Методы класса

Класс Hook предоставляет функциональность для управления коллбеками (хуками), которые можно привязать к различным событиям в вашем приложении. Хуки позволяют гибко расширять функциональность, выполняя дополнительные действия при наступлении определенных событий.

Примеры использования

Регистрация коллбеков

Вы можете регистрировать коллбеки как анонимные функции, так и функции, определенные в коде. Приоритет выполнения коллбеков определяет порядок их вызова.

    
        // Определение функции коллбека
        function sendWelcomeEmail($user) {
            echo "Sending welcome email to: " . $user->email . "\n";
        }

        // Регистрация коллбеков
        Hook::add('onUserRegister', 'sendWelcomeEmail', 10);
        Hook::add('onUserRegister', function($user) {
            echo "User registered: " . $user->name . "\n";
        }, 5);
        Hook::add('onOrderPlaced', function($order) {
            echo "Order placed: " . $order->id . "\n";
        }, 10);
        Hook::add('onOrderPlaced', function($order) {
            echo "Notifying logistics for order: " . $order->id . "\n";
        }, 1);
    

Вызов коллбеков

Коллбеки вызываются методом run, который принимает имя события и аргументы для передачи коллбекам.

    
        // Вызов коллбеков для события onUserRegister
        function registerUser($userData) {
            $user = new stdClass();
            $user->name = $userData['name'];
            $user->email = $userData['email'];

            Hook::run('onUserRegister', $user);
        }

        // Вызов коллбеков для события onOrderPlaced
        function placeOrder($orderData) {
            $order = new stdClass();
            $order->id = $orderData['id'];

            Hook::run('onOrderPlaced', $order);
        }

        // Пример использования функций
        registerUser(['name' => 'John Doe', 'email' => 'john@example.com']);
        placeOrder(['id' => 123]);
    

Проверка существования и удаление коллбеков

Вы можете проверить, зарегистрирован ли хук, и удалить его, если он больше не нужен.

    
    // Проверка существования хука
    if (Hook::exists('onUserRegister')) {
        echo "Хук 'onUserRegister' зарегистрирован.";
    }

    // Удаление хука
    Hook::remove('onUserRegister');
    

Получение всех зарегистрированных хуков

Вы можете получить все зарегистрированные хуки для отладки или анализа.

    
        // Получение всех зарегистрированных хуков
        $allHooks = Hook::getAllHooks();
        print_r($allHooks);
    

Вывод

Класс Hook предоставляет мощный и гибкий механизм для управления коллбеками в вашем приложении. С помощью методов add, remove, exists, run и getAllHooks вы можете легко регистрировать, вызывать и управлять хуками для различных событий, обеспечивая расширяемость и модульность вашего кода.