コード例 #1
0
ファイル: SumFunction.php プロジェクト: addiks/phpsql
 public function executeFunction(FunctionJob $function, ExecutionContext $context)
 {
     /* @var $argumentValue Value */
     $argumentValue = current($function->getArguments());
     $beforeSourceRow = $context->getCurrentSourceRow();
     $sum = 0;
     foreach ($context->getCurrentSourceSet() as $row) {
         $context->setCurrentSourceRow($row);
         $value = $this->valueResolver->resolveValue($argumentValue, $context);
         if (is_numeric($value)) {
             $sum += $value;
         }
     }
     $context->setCurrentSourceRow($beforeSourceRow);
     return $sum;
 }
コード例 #2
0
ファイル: CountFunction.php プロジェクト: addiks/phpsql
 public function executeFunction(FunctionJob $function, ExecutionContext $context)
 {
     /* @var $result SelectResult */
     $result = $this->resultSet;
     /* @var $argumentValue Value */
     $argumentValue = current($function->getArguments());
     $count = 0;
     $beforeSourceRow = $context->getCurrentSourceRow();
     foreach ($context->getCurrentSourceSet() as $row) {
         $context->setCurrentSourceRow($row);
         $value = $this->valueResolver->resolveValue($argumentValue);
         if (!is_null($value)) {
             $count++;
         }
     }
     $context->setCurrentSourceRow($beforeSourceRow);
     return $count;
 }