mouf / utils.common.conditioninterface
此包包含一个条件接口,以及一些实现它的类。例如,AndCondition 要求所有条件都必须满足,而 OrCondition 则要求至少满足一个条件。条件是一个具有 'isOk' 方法的类。条件返回真
v2.0.2
2019-08-29 15:22 UTC
Requires
- php: >=5.3.0
README
此包包含用于测试条件的接口。基本上,实现此接口的类的实例可以进行测试,实例将返回 "true" 或 "false"。
这个概念非常抽象,但也很强大。让我们看看一个示例
- 您可以编写一个 "LoggedCondition" 类来实现一个条件,如果当前用户已登录则返回 true,否则返回 false。
- 您可以编写一个 "HasRightCondition" 类来实现一个条件,如果当前用户拥有某些权限集合则返回 true,否则返回 false。
- 您可以编写一个 "TimeCondition" 类来实现一个条件,仅在一天中的某些时间返回 true。
- ...
显然,这个包本身没有用。它只有在您在类中实现接口时才有用。
但它有什么用呢?
如果您的代码的一些组件只是期望一个条件,它就非常实用了。例如,假设您正在开发一个菜单系统。特定的菜单项仅在用户登录时才应显示。
如果菜单项由 MenuItem 类的实例表示,有几种方法可以解决这个问题。使用面向对象设计,您可以扩展 MenuItem 类以添加有关 "必须登录" 的特殊行为。但使用 ConditionInterface,它会更强大。如果每个 MenuItem 包含 ConditionInterface,您只需将 "LoggedCondition" 实例添加到您的菜单项中,就完成了!当您使用像 Mouf 这样的依赖注入框架时,这变得非常有趣。
实际应用
实现条件接口非常简单:只需在您的代码中添加一个 "isOk" 方法即可
/**
* Returns true if the condition is met, false otherwise.
*
* @param mixed $caller The condition caller. Optional.
* @return bool
*/
function isOk($caller = null);
提供的类
此包附带一些实用类
TrueCondition
:总是返回 trueFalseCondition
:总是返回 falseAndCondition
:对子条件执行逻辑 ANDOrCondition
:对子条件执行逻辑 ORNotCondition
:对条件执行逻辑 NOTBoolToCondition
:将布尔值包装成条件接口(用于动态设置)
Mouf 包
此包是 Mouf(http://mouf-php.com)的一部分,Mouf 是一个通过提供图形依赖注入框架来确保良好开发实践的尝试。