Функция автоматического вызова, когда вызывается индексная функция laravel контроллера - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть класс контроллера следующим образом:

class Controller extends BaseController{

protected function function1()
{
    //code
}

protected function function2()
{
     //code
}
}

, и каждый контроллер в проекте расширяет этот класс, так что я могу писать функции, используемые в нескольких контроллерах в этом классе контроллеров.

class RandomController extends Controller{

    public function aCertainFunction()
    {
        $this->function1();
        //code 
    {
}

Теперь у меня есть функция, которая должна вызываться каждый раз, когда вызывается индексная функция любого контроллера. Один из вариантов заключается в том, что я вручную добавляю эту функцию в начале каждой индексной функции в имеющихся у меня контроллерах и продолжаю делать это для каждого нового контроллера, который я создаю в будущем, но это не кажется мне эффективным.

Есть ли способ определить эту функцию в моем классе Controller, чтобы каждая индексная функция во всех классах, которые наследуются от этого класса, автоматически вызывала эту функцию?

1 Ответ

1 голос
/ 20 февраля 2020

Вам определенно стоит взглянуть на систему прослушивания событий , встроенную в Laravel framework. Допустим, вы хотите запускать aCertainFunction() каждый раз при выполнении function1 или function2.

Вам нужно будет объявить класс Event, который будет сохранен в namespace App\Events; (вы не не нужно вообще расширять контроллер, так как он предназначен для другой цели).

Функция publi c handle вашего класса Event будет вызываться для выполнения при запуске события с помощью функции event(). Поэтому вы объявите свою функцию aCertainFunction непосредственно внутри класса событий (и вызовете ее из функции handle). Пожалуйста, ознакомьтесь с тем, как Laravel обрабатывает События, поскольку они действительно предназначены для делегирования и вызывают их в определенных c целях (и именно поэтому мы называем их "слушателями").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...