An Expression visitor walks a graph of expressions and turns them into a query for the underlying implementation.
@author Benjamin Eberlei <kontakt@beberlei.de>
Expanded class hierarchy of ExpressionVisitor
abstract class ExpressionVisitor {
/**
* Convert a comparison expression into the target query language output
*
* @param Comparison $comparison
*
* @return mixed
*/
public abstract function walkComparison(Comparison $comparison);
/**
* Convert a value expression into the target query language part.
*
* @param Value $value
*
* @return mixed
*/
public abstract function walkValue(Value $value);
/**
* Convert a composite expression into the target query language output
*
* @param CompositeExpression $expr
*
* @return mixed
*/
public abstract function walkCompositeExpression(CompositeExpression $expr);
/**
* Dispatch walking an expression to the appropriate handler.
*
* @param Expression
*
* @return mixed
*/
public function dispatch(Expression $expr) {
switch (true) {
case $expr instanceof Comparison:
return $this
->walkComparison($expr);
case $expr instanceof Value:
return $this
->walkValue($expr);
case $expr instanceof CompositeExpression:
return $this
->walkCompositeExpression($expr);
default:
throw new \RuntimeException("Unknown Expression " . get_class($expr));
}
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ExpressionVisitor:: |
public | function | Dispatch walking an expression to the appropriate handler. | |
ExpressionVisitor:: |
abstract public | function | Convert a comparison expression into the target query language output | 1 |
ExpressionVisitor:: |
abstract public | function | Convert a composite expression into the target query language output | 1 |
ExpressionVisitor:: |
abstract public | function | Convert a value expression into the target query language part. | 1 |