PHP Класс izzum\rules\Rule

Rules should never have side effects and should only return true or false. This Rule serves as a base class for all your business logic, encapsulating and centralizing the logic in a class and making it reusable through it's interface. This is a way of seperating mechanism and policy of code. In other words: how it is done versus what should be done. The mechanism is a rule library, the policy is what is defined in the rule. https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy The rules package aims to prevent code like this: if ($name == 'blabla' && $password == 'lala') { do something here. the statement above might be duplicated in a lot of places } and substitute it by this: $rule = new AccesRule($name, $password); if($rule->applies()) { do something } or: $rule = new IsOrderTaggedForDelivery($order); $rule->applies(); usage: Clients should subclass this Rule and implement the protected '_applies' method and let that return a boolean value. A concrete Rule (a subclass) can (and should be) injected with contextual data via dependency injection in the constructor
Автор: Rolf Vreijdenberger
Автор: Richard Ruiter
Наследование: implements izzum\rules\IRule
Показать файл Открыть проект

Открытые методы

Метод Описание
__toString ( )
andRule ( Rule $other ) : Rule Chain a 'AND' rule.
applies ( ) : boolean The applies method is the only point where the rule can be validated.
containsResult ( string $expected ) Check if this rule contains a certain expected result.
getCacheEnabled ( ) : boolean
getResults ( ) : RuleResult[] Gets an array of RuleResult to check if a rule has set a certain result for the client of the rule.
hasResult ( ) : boolean Has any result?
not ( ) : Rule Inverse current rule
orRule ( Rule $other ) : Rule Chain a 'OR' rule.
setCacheEnabled ( boolean $cached = true ) should we cache the result if the rule is applied more than once?
toString ( ) : string
xorRule ( Rule $other ) : Rule Chain a 'XOR' rule.

Защищенные методы

Метод Описание
_applies ( ) : boolean A concrete rule should at least implement the _applies method and return a boolean.
addResult ( string $result ) Add a result to this rule.
getCache ( ) : boolean return the cached value
handleException ( Exception $e ) hook method for logging etc.

Приватные методы

Метод Описание
clearCache ( )
clearResult ( ) Clear the results
setCache ( $result )
shouldReturnCache ( ) : boolean should we return a cached value?

Описание методов

__toString() публичный Метод

public __toString ( )

_applies() абстрактный защищенный Метод

When the rule logic cannot determine if it applies then an exception should be thrown instead of a boolean value
abstract protected _applies ( ) : boolean
Результат boolean

addResult() закрытый защищенный Метод

this might be useful if a client wants to check if a rule has executed certain steps during the logic of rule execution.
final protected addResult ( string $result )
$result string

andRule() закрытый публичный Метод

This means both rules should apply.
final public andRule ( Rule $other ) : Rule
$other Rule
Результат Rule

applies() закрытый публичный Метод

Internally each rule implements the _applies() method to do the actual validation. There are only two types of outcome for each rule. Either the rule applies (true) or doesn't (false). Any other outcome should always be thrown as an exception so no false assumptions can be made by the caller. For example when a rule returns a NULL value the caller may asume that false is meant. The rule cannot trust that the caller checks the boolean type so we will.
final public applies ( ) : boolean
Результат boolean

containsResult() закрытый публичный Метод

This is only matched on the string, not on the class that generated the result. you can check this against constants in a class eg: Rule::RESULT_<*>. In case you want to also know the class or classname, use getResults()
См. также: Rule::getResults()
final public containsResult ( string $expected )
$expected string

getCache() закрытый защищенный Метод

return the cached value
final protected getCache ( ) : boolean
Результат boolean

getCacheEnabled() закрытый публичный Метод

final public getCacheEnabled ( ) : boolean
Результат boolean

getResults() публичный Метод

This will mostly be useful to check what actually happened when a rule has failed and if the _applies() method actually calls 'addResult()' to state what has happened in a rule.
public getResults ( ) : RuleResult[]
Результат RuleResult[]

handleException() защищенный Метод

hook method for logging etc.
protected handleException ( Exception $e )
$e Exception

hasResult() закрытый публичный Метод

Has any result?
final public hasResult ( ) : boolean
Результат boolean

not() закрытый публичный Метод

Inverse current rule
final public not ( ) : Rule
Результат Rule

orRule() закрытый публичный Метод

This means one of the rules should apply.
final public orRule ( Rule $other ) : Rule
$other Rule
Результат Rule

setCacheEnabled() закрытый публичный Метод

should we cache the result if the rule is applied more than once?
final public setCacheEnabled ( boolean $cached = true )
$cached boolean

toString() публичный Метод

public toString ( ) : string
Результат string

xorRule() закрытый публичный Метод

This means one of the rules should apply but not both.
final public xorRule ( Rule $other ) : Rule
$other Rule
Результат Rule