我正在使用PHP-Parser来评估用于遍历 if 语句的条件。我只想知道在代码的遍历过程中使用了哪些条件。例如:
测试
<?php
$val = true;
if ($val == true){
$result = true;
} else {
$result = false;
}
我已经找到了测试代码的AST,如下
AST
array( 0: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: val ) expr: Expr_ConstFetch( name: Name( parts: array( 0: true ) ) ) ) ) 1: Stmt_If( cond: Expr_BinaryOp_Equal( left: Expr_Variable( name: val ) right: Expr_ConstFetch( name: Name( parts: array( 0: true ) ) ) ) stmts: array( 0: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: result ) expr: Expr_ConstFetch( name: Name( parts: array( 0: true ) ) ) ) ) ) elseifs: array( ) else: Stmt_Else( stmts: array( 0: Stmt_Expression( expr: Expr_Assign( var: Expr_Variable( name: result ) expr: Expr_ConstFetch( name: Name( parts: array( 0: false ) ) ) ) ) ) ) ) )
我想要得到的是遍历期间测试代码中使用的条件,预计是这样的:
预期结果
Conditions: (operator: Equal true:bool,true:bool,)
// OR
Condition: (operator: NOT (operator: Equal true:bool,true:bool,),)
所以我只是想知道如何获得遍历过程中通过的条件。