Можно ли использовать абстрактные классы или интерфейсы в политиках laravel (Gates)?Как это:
protected $policies = [ MyAbstractClass::class => PostPolicy::class, MyInterface::class => PostPolicy::class, ];
Похоже, что исходный код для Illuminate\Auth\Access\Gate возвращается к is_subclass_of() при разрешении экземпляра политики.Из php документов для is_subclass_of():
Illuminate\Auth\Access\Gate
is_subclass_of()
Проверяет, имеет ли данный объект имя класса class_name в качестве одного из его родителей или реализует it.
(выделено мной)
Так что да, вы должны это сделать.
protected $policies = [ AbstractClass::class => ConcreteClass::class, PostAbstractClass::class => PostConcreteClass::class, ];