<?php namespace app\admin\attr; use Attribute; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD)] class Permission { /** * 权限值 */ public $value; /** * 仅对方法生效!是否忽略权限要求 */ public $ignore; /** * 继承controller的权限, 例如controller设置了权限值'admin', 方法设置了权限值'create', 那么实际权限值为'admin.create' * 如果在controller上设为true,那么当方法没有设置该注解时,而且useMethodName设置为了true,会自动使用方法名作为继承值 * 如果在controller上设为false,只使用控制器的权限值 */ public $inherit; /** * 仅对controller生效! * true: 权限值为空时使用方法名作为权限值 * false: 权限值为空时,使用控制器名小写作为权限值 * @see \InvalidArgumentException */ public $useMethodName; /** * __construct * * @param string $value 权限值 * @param bool $ignore 仅对方法生效!是否忽略权限要求 * @param bool $name 继承controller的权限, 例如controller设置了权限值'admin', 方法设置了权限值'create', 那么实际权限值为'admin.create' * @param bool $useMethodName 仅对controller生效!true: 权限值为空时使用方法名作为权限值; false: 权限值为空时,使用控制器名小写作为权限值 * @see \InvalidArgumentException */ public function __construct($value = '', $ignore = false, $inherit = true, $useMethodName = true) { $this->value = $value; $this->ignore = $ignore; $this->inherit = $inherit; $this->useMethodName = $useMethodName; } }