1: <?php
2:
3: declare(strict_types=1);
4:
5: namespace LaravelUi5\OData\Protocol\Planning\Expression;
6:
7: /**
8: * Visitor interface for FilterExpression trees.
9: *
10: * Methods receive the raw node. The visitor is responsible for recursing into
11: * children — this gives full control over traversal order, short-circuiting,
12: * and context threading (e.g. lambda variable scope injection).
13: *
14: * Drivers implement this interface to translate a FilterExpression tree into
15: * a storage-layer query (Eloquent WHERE clause, SQL fragment, etc.).
16: */
17: interface FilterExpressionVisitor
18: {
19: public function visitLiteral(LiteralExpression $node): mixed;
20: public function visitNullLiteral(NullLiteralExpression $node): mixed;
21: public function visitPropertyPath(PropertyPathExpression $node): mixed;
22: public function visitBinary(BinaryExpression $node): mixed;
23: public function visitUnary(UnaryExpression $node): mixed;
24: public function visitFunctionCall(FunctionCallExpression $node): mixed;
25: public function visitLambda(LambdaExpression $node): mixed;
26: public function visitLambdaVariable(LambdaVariableExpression $node): mixed;
27: }
28: