Citat:
Ursprungligen postat av
AlexanderAnka
Jag vill helst parse:a. Frågan som jag har försökt förmedla sedan trådstart utan att lyckas särskilt bra är vilket format jag ska spara mitt logiska uttryck i, och hur jag sedan parsar detta på ett så bra och smidigt sätt som möjligt :-)
Jag gör ett försök i inlägg#4 som både är omständligt och inte klarar hantera nästlad logik. Är övertygad om att det går att göra bättre. Problemet lär inte vara unikt.
Kanske en klass med attributen...
* Operand 1
* Sträng - AND, OR osv...
* Operand 2
...där operanderna antingen är objekt av samma klass (referenser eller vad nu PHP använder) eller en sträng - firstname, zip osv... EDIT: Strängarna ska nog också vara objekt så att man kan hantera båda typer av operander på samma sätt.
Och googla "PHP serialize".
Evaluerar det gör du rekursivt:
Kod:
bool myEval(expr) {
if (exprtypen är sträng) {
return isset(...);
} else {
switch (expr.operator) {
case AND:
return myEval(operand1) && myEval(operand2);
break;
case OR:
return myEval(operand1) || myEval(operand2);
break;
}
}
}