Ejemplo n.º 1
0
 /**
  * Process an arithmetic expression node for nullability
  * 
  * @param FunctionCallExpression $expression       The function call expression
  *                                                 node to process.
  * @param AbstractExpression     $parentExpression The parent expression of 
  *                                                 expression node to process.
  * 
  * @return LogicalExpression or NULL
  */
 private function _processFuncationCallNode(FunctionCallExpression $expression, $parentExpression)
 {
     $paramExpressions = $expression->getParamExpressions();
     $checkNullForMostChild = strcmp($expression->getFunctionDescription()->functionName, 'is_null') === 0;
     $resultExpression = null;
     foreach ($paramExpressions as $paramExpression) {
         $resultExpression1 = $this->_processNodeForNullability($paramExpression, $expression, !$checkNullForMostChild);
         if ($resultExpression1 != null && $resultExpression != null) {
             $resultExpression = $this->_mergeNullableExpressionTrees($resultExpression, $resultExpression1);
         } else {
             if ($resultExpression1 != null && $resultExpression == null) {
                 $resultExpression = $resultExpression1;
             }
         }
     }
     if ($resultExpression == null) {
         return null;
     }
     if ($parentExpression == null) {
         return new LogicalExpression($resultExpression, $expression, ExpressionType::AND_LOGICAL);
     }
     return $resultExpression;
 }