public function render() { $operands = array(); foreach ($this->_operands as $opr) { if ($opr instanceof Expression) { $opr_rendered = $opr->render(); $num_oprs = $opr->getNumOperands(); if ($num_oprs > 1) { $opr_rendered = '(' . $opr_rendered . ')'; } $opr = $opr_rendered; } $operands[] = $opr; } $operator = Operator::toHtml($this->_operator); if (false !== ($decorator = $this->getDecorator('operator'))) { $operator = $decorator->decorate($operator); } switch (sizeof($operands)) { case 1: $format = '%s %s'; $params = array($operator, $operands[0]); break; case 2: $format = '%s %s %s'; $params = array($operands[0], $operator, $operands[1]); break; } $expression = vsprintf($format, $params); if (false !== ($decorator = $this->getDecorator('expression'))) { $expression = $decorator->decorate($expression); } return $expression; }