mouf/utils.common.conditioninterface

此包包含一个条件接口,以及一些实现它的类。例如,AndCondition 要求所有条件都必须满足,而 OrCondition 则要求至少满足一个条件。条件是一个具有 'isOk' 方法的类。条件返回真

v2.0.2 2019-08-29 15:22 UTC

This package is auto-updated.

Last update: 2024-08-29 03:31:23 UTC


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:总是返回 true
  • FalseCondition:总是返回 false
  • AndCondition:对子条件执行逻辑 AND
  • OrCondition:对子条件执行逻辑 OR
  • NotCondition:对条件执行逻辑 NOT
  • BoolToCondition:将布尔值包装成条件接口(用于动态设置)

Mouf 包

此包是 Mouf(http://mouf-php.com)的一部分,Mouf 是一个通过提供图形依赖注入框架来确保良好开发实践的尝试。