. */ /** * Atom = string | integer | float | input_parameter * * @package Doctrine * @subpackage Query * @author Guilherme Blanco * @author Janne Vanhala * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://www.phpdoctrine.org * @since 1.0 * @version $Revision$ */ class Doctrine_Query_Production_Atom extends Doctrine_Query_Production { protected $_type; protected $_value; public function syntax($paramHolder) { // Atom = string | integer | float | input_parameter switch ($this->_parser->lookahead['type']) { case Doctrine_Query_Token::T_STRING: $this->_parser->match(Doctrine_Query_Token::T_STRING); $this->_type = 'string'; break; case Doctrine_Query_Token::T_INTEGER: $this->_parser->match(Doctrine_Query_Token::T_INTEGER); $this->_type = 'integer'; break; case Doctrine_Query_Token::T_FLOAT: $this->_parser->match(Doctrine_Query_Token::T_FLOAT); $this->_type = 'float'; break; case Doctrine_Query_Token::T_INPUT_PARAMETER: $this->_parser->match(Doctrine_Query_Token::T_INPUT_PARAMETER); $this->_type = 'param'; break; default: $this->_parser->syntaxError('string, number or parameter (? or :)'); break; } $this->_value = $this->_parser->token['value']; } public function buildSql() { $conn = $this->_parser->getSqlBuilder()->getConnection(); switch ($this->_type) { case 'param': return $this->_value; break; case 'integer': case 'float': return $conn->quote($this->_value, $this->_type); break; default: return $conn->string_quoting['start'] . $conn->quote($this->_value, $this->_type) . $conn->string_quoting['end']; break; } } }