Я понимаю, что способности, определенные с помощью политик действительно полиморфные, а это означает, что:Являются ли способности Laravel полиморфными по аргументу?
Gate::allows('update', $post);
Gate::allows('update', $comment);
будет вызывать различные функции, если два объекта различных классов, которые зарегистрированы с различными политиками:
protected $policies = [
Post::class => PostPolicy::class,
Comment::class => CommentPolicy::class,
];
Хотя мне кажется, что способности, определенные с помощью $gate->define()
, равны , а не полиморфные, что означает, что два вызова, использующие одно и то же имя политики, будут перезаписывать каждый прочее:
$gate->define('update', function ($user, $post) { /* THIS IS THROWN AWAY! */ });
$gate->define('update', function ($user, $comment) { /* the last one is kept */ });
Это правильно?
Есть ли связь между именами способностей приведены в документации для не-полиморфных примеров (update-post
, update-comment
) и показанных в примерах политики (update
)?
Я имею в виду, что суффикс -post
добавлен или сделан Laravel? Или это просто пример?
Очень ясно, спасибо – Tobia
Ваше приветствие. – Bogdan