#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);
});
}
}
Является ли это лучшей практикой?