Как повторно использовать пользовательские функции в разных контроллерах Laravel? - PullRequest
0 голосов
/ 21 апреля 2019

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

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

Ответы [ 2 ]

2 голосов
/ 21 апреля 2019

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

Другой подход заключается в создании пользовательского вспомогательного файла, который будет содержать функции, которые вы повторно используете. Например, создайте файл helpers.php в папке приложения, а затем добавьте его в composer.json для автозагрузки.

"autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
      "app/helpers.php" // here is the helpers file to autoload.
    ],
        "classmap": [
        "database/seeds",
        "database/factories"
    ]
},

После этого запуска

composer dump-autoload

в вашем терминале.

0 голосов
/ 21 апреля 2019

Я предпочитаю создавать сервисный слой и внедрять в контроллер

class AnyController {
    public function __construct(MyService $myService)
    {
        $this->myService = $myService;
    }

    public function anyFunction()
    {
        // $this->myService->foo()
    }
}

Или вы можете добавить в конкретное действие

class AnyController {
    public function anyFunction(MyService $myService)
    {
        // $this->myService->foo()
    }
}

Подробнее

https://laravel.com/docs/5.8/container

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