From b477211b4bf05a37527786e096e9ad3a823cf38d Mon Sep 17 00:00:00 2001 From: Guilherme Blanco Date: Mon, 26 Jul 2010 01:24:46 -0300 Subject: [PATCH] [DDC-490] Added extensibility support to Query Lexer. --- lib/Doctrine/ORM/Query/Lexer.php | 12 +++++++++++- lib/Doctrine/ORM/Query/SqlWalker.php | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/Doctrine/ORM/Query/Lexer.php b/lib/Doctrine/ORM/Query/Lexer.php index 4c6645b04..a9ae56db9 100644 --- a/lib/Doctrine/ORM/Query/Lexer.php +++ b/lib/Doctrine/ORM/Query/Lexer.php @@ -151,7 +151,7 @@ class Lexer extends \Doctrine\Common\Lexer $value = str_replace("''", "'", substr($value, 1, strlen($value) - 2)); return self::T_STRING; } else if (ctype_alpha($value[0]) || $value[0] === '_') { - $name = 'Doctrine\ORM\Query\Lexer::T_' . strtoupper($value); + $name = $this->getLexerClassName() . '::T_' . strtoupper($value); if (defined($name)) { $type = constant($name); if ($type > 100) { @@ -185,4 +185,14 @@ class Lexer extends \Doctrine\Common\Lexer return $type; } + + /** + * Retrieve the class name (allows extensibility through Late Static Binding) + * + * @return string This class name + */ + protected function getLexerClassName() + { + return __CLASS__; + } } \ No newline at end of file diff --git a/lib/Doctrine/ORM/Query/SqlWalker.php b/lib/Doctrine/ORM/Query/SqlWalker.php index 2e9620105..34be0a1be 100644 --- a/lib/Doctrine/ORM/Query/SqlWalker.php +++ b/lib/Doctrine/ORM/Query/SqlWalker.php @@ -760,7 +760,7 @@ class SqlWalker implements TreeWalker $joinTableAlias = $this->getSqlTableAlias($joinTable['name'], $joinedDqlAlias); $sql .= $assoc->getQuotedJoinTableName($this->_platform) . ' ' . $joinTableAlias . ' ON '; - $first = true; + $first = true; if ($relation->isOwningSide) { foreach ($assoc->relationToSourceKeyColumns as $relationColumn => $sourceColumn) { if ( ! $first) $sql .= ' AND '; else $first = false; @@ -784,7 +784,7 @@ class SqlWalker implements TreeWalker ? ' LEFT JOIN ' : ' INNER JOIN '; $sql .= $targetTableName . ' ' . $targetTableAlias . ' ON '; - $first = true; + $first = true; if ($relation->isOwningSide) { foreach ($assoc->relationToTargetKeyColumns as $relationColumn => $targetColumn) { if ( ! $first) $sql .= ' AND '; else $first = false;