altherius / gandalf
PHP的微型决策器
dev-master
2020-10-14 23:54 UTC
Requires
- php: ^7.2
Requires (Dev)
- phpunit/phpunit: ^9.4.0
This package is auto-updated.
Last update: 2024-09-15 08:05:58 UTC
README
Gandalf
Gandalf是针对您的PHP项目的微型决策器。
安装
使用composer安装gandalf
composer require altherius/gandalf
入门指南
Gandalf使用投票系统,您可以通过实现Gandalf\Voter
接口并加入自己的业务逻辑来自定义投票者。
class PostVoter implements \Gandalf\Voter { public function abstains(string $permission, object $object): bool { if (!$object instanceof Post) { return true; } return false; } public function vote(string $permission, object $object): bool { /* Implement your decision logic here */ return true; } }
然后在您的代码中,您可以使用决策管理器
$post = new Post(); $decisionManager = new \Gandalf\DecisionManager(); $decisionManager->decide('edit', $post);
策略
决策管理器可以根据3种不同的策略进行决策
STRATEGY_AFFIRMATIVE
:如果至少有一个投票者表示肯定,决策管理器将做出肯定的决策。这是默认行为。STRATEGY_UNANIMOUS
:所有未弃权投票者都必须表示肯定。STRATEGY_CONSENSUS
:必须有一半以上的投票者表示肯定。
您可以在实例化DecisionManager
时传递一个策略。