public function leaveNode(\PHPParser_Node $Node)
{
switch (true) {
//Field
case $Node instanceof \PHPParser_Node_Expr_PropertyFetch:
$Name = AST::VerifyNameNode($Node->name);
$this->AccessorBuilder->{$Name};
break;
//Method
//Method
case $Node instanceof \PHPParser_Node_Expr_MethodCall:
$Name = AST::VerifyNameNode($Node->name);
$this->AccessorBuilder->{$Name}();
break;
//Indexor
//Indexor
case $Node instanceof \PHPParser_Node_Expr_ArrayDimFetch:
if (!$Node->dim instanceof PHPParserConstantValueNode) {
throw new \Storm\Drivers\Fluent\Object\Functional\ASTException('Property indexor must be a constant value');
}
$this->AccessorBuilder[$this->GetNodeValue($Node->dim)];
break;
//Invocation
//Invocation
case $Node instanceof \PHPParser_Node_Expr_FuncCall:
if ($Node->name instanceof \PHPParser_Node_Expr_Variable && $Node->name->name === $this->EntityVariableName) {
$this->AccessorBuilder();
}
break;
default:
return;
}
}