Определите ворота в поставщике пользовательских услуг

#php #laravel #laravel-service-container

Вопрос:

У меня есть вопрос. Рекомендуется ли определять ворота в поставщиках пользовательских услуг? Я пишу систему разрешений в Laravel, определяя ворота для каждого разрешения. Я создал поставщика пользовательских услуг, который загружает одноэлементную службу, которая управляет разрешениями и предоставляет разрешения из базы данных. Эти разрешения определяются как ворота.

Пример Загрузки Контейнера Службы:

 class PermissionServiceProvider extends ServiceProvider
{
    public function boot(PermissionManager $manager)
    {
        $this->app->singleton(PermissionManager::class, function ($app) use ($manager) {
            return $manager;
        });
    }
}
 

Пример функции PermissionManager определяет():

 private function defineGates() {
    $gates = $this->loadAllPermissions();

    foreach ($gates as $gate) {
        Gate::define($gate, function (User $user) use ($gate) {
            return $user->hasPermission($gate);
        });
    }
}
 

Является ли это лучшей практикой?