Author: romanb
Date: 2008-09-13 13:40:17 +0100 (Sat, 13 Sep 2008)
New Revision: 4964
Added:
trunk/lib/Doctrine/Common/ClassLoader.php
Removed:
trunk/lib/Doctrine/Expression.php
trunk/lib/Doctrine/Manager.php
Modified:
trunk/lib/Doctrine.php
trunk/lib/Doctrine/DBAL/Types/Type.php
trunk/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php
trunk/lib/Doctrine/ORM/Internal/Hydration/StandardHydrator.php
trunk/lib/Doctrine/Query.php
trunk/lib/Doctrine/Query/ParserRule.php
trunk/tests/Orm/Hydration/BasicHydrationTest.php
trunk/tests/lib/DoctrineTestInit.php
Log:
more cleanups. introducing ClassLoader.
Added: trunk/lib/Doctrine/Common/ClassLoader.php
===================================================================
--- trunk/lib/Doctrine/Common/ClassLoader.php (rev 0)
+++ trunk/lib/Doctrine/Common/ClassLoader.php 2008-09-13 12:40:17 UTC (rev
4964)
@@ -0,0 +1,91 @@
+<?php
+
+/**
+ * A class loader used to load class files on demand.
+ *
+ * Usage recommendation:
+ * 1) Use only 1 class loader instance.
+ * 2) Prepend the base paths to your class libraries (including Doctrine's) to
your include path.
+ * 3) DO NOT setCheckFileExists(true). Doing so is expensive.
+ *
+ * @since 2.0
+ */
+class Doctrine_Common_ClassLoader
+{
+ private $_namespaceSeparator = '_';
+ private $_fileExtension = '.php';
+ private $_checkFileExists = false;
+ private $_basePath;
+
+ public function __construct()
+ {
+ }
+
+ public function setCheckFileExists($bool)
+ {
+ $this->_checkFileExists = $bool;
+ }
+
+ public function setClassFileExtension($extension)
+ {
+ $this->_fileExtension = $extension;
+ }
+
+ public function setNamespaceSeparator($separator)
+ {
+ $this->_namespaceSeparator = $separator;
+ }
+
+ /**
+ * Sets a static base path that is prepended to the path derived from the
class itself.
+ *
+ * @param string $basePath
+ */
+ public function setBasePath($basePath)
+ {
+ $this->_basePath = $basePath;
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $classname The name of the class to load.
+ * @return boolean TRUE if the class has been successfully loaded, FALSE
otherwise.
+ */
+ public function loadClass($className)
+ {
+ if (class_exists($className, false) || interface_exists($className,
false)) {
+ return false;
+ }
+
+ $class = '';
+ if ($this->_basePath) {
+ $class .= $this->_basePath . DIRECTORY_SEPARATOR;
+ }
+ $class .= str_replace($this->_namespaceSeparator, DIRECTORY_SEPARATOR,
$className)
+ . $this->_fileExtension;
+
+ if ($this->_checkFileExists) {
+ if (!$fh = @fopen($class, 'r', true)) {
+ return false;
+ }
+ @fclose($fh);
+ }
+
+ require $class;
+
+ return true;
+ }
+
+ /**
+ * Registers this class loader using spl_autoload_register().
+ */
+ public function register()
+ {
+ spl_autoload_register(array($this, 'loadClass'));
+ }
+
+}
+
+
+?>
\ No newline at end of file
Modified: trunk/lib/Doctrine/DBAL/Types/Type.php
===================================================================
--- trunk/lib/Doctrine/DBAL/Types/Type.php 2008-09-13 10:36:58 UTC (rev
4963)
+++ trunk/lib/Doctrine/DBAL/Types/Type.php 2008-09-13 12:40:17 UTC (rev
4964)
@@ -29,7 +29,8 @@
abstract public function getName();
/**
- * Factory method.
+ * Factory method to create type instances.
+ * Type instances are implemented as flyweights.
*
* @param string $name The name of the type (as returned by getName()).
* @return Doctrine::DBAL::Types::Type
Deleted: trunk/lib/Doctrine/Expression.php
===================================================================
--- trunk/lib/Doctrine/Expression.php 2008-09-13 10:36:58 UTC (rev 4963)
+++ trunk/lib/Doctrine/Expression.php 2008-09-13 12:40:17 UTC (rev 4964)
@@ -1,147 +0,0 @@
-<?php
-/*
- * $Id$
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information, see
- * <http://www.phpdoctrine.org>.
- */
-
-#namespace Doctrine::DBAL::Expressions;
-
-/**
- * Doctrine_Expression
- *
- * @package Doctrine
- * @subpackage Expression
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @link www.phpdoctrine.org
- * @since 1.0
- * @version $Revision$
- * @author Konsta Vesterinen <[EMAIL PROTECTED]>
- * @todo Merge all Expression classes into the appropriate DBAL
DatabasePlatform classes.
- */
-class Doctrine_Expression
-{
- protected $_expression;
- protected $_conn;
- protected $_tokenizer;
-
- /**
- * Create an expression
- *
- * @param string $expr The expression
- * @param Doctrine_Connection $conn The connection (optional)
- * @return void
- */
- public function __construct($expr, $conn = null)
- {
- $this->_tokenizer = new Doctrine_Query_Tokenizer();
- $this->setExpression($expr);
- if ($conn !== null) {
- $this->_conn = $conn;
- }
- }
-
- /**
- * getConnection
- *
- * @return Doctrine_Connection The connection
- */
- public function getConnection()
- {
- if ( ! isset($this->_conn)) {
- return Doctrine_Manager::connection();
- }
-
- return $this->_conn;
- }
-
- /**
- * setExpression
- *
- * @param string $clause The expression to set
- * @return void
- */
- public function setExpression($clause)
- {
- $this->_expression = $this->parseClause($clause);
- }
-
- /**
- * parseExpression
- *
- * @todo: What does this function do?
- *
- * @param string $expr The expression to parse
- * @return void
- */
- public function parseExpression($expr)
- {
- $pos = strpos($expr, '(');
- if ($pos === false) {
- return $expr;
- }
-
- // get the name of the function
- $name = substr($expr, 0, $pos);
- $argStr = substr($expr, ($pos + 1), -1);
-
- // parse args
- foreach ($this->_tokenizer->bracketExplode($argStr, ',') as $arg) {
- $args[] = $this->parseClause($arg);
- }
-
- return call_user_func_array(array($this->getConnection()->expression,
$name), $args);
- }
-
- /**
- * parseClause
- *
- * @param string $clause The clause
- * @return string The parse clause
- */
- public function parseClause($clause)
- {
- $e = $this->_tokenizer->bracketExplode($clause, ' ');
-
- foreach ($e as $k => $expr) {
- $e[$k] = $this->parseExpression($expr);
- }
-
- return implode(' ', $e);
- }
-
- /**
- * getSql
- *
- * @return string The expression
- */
- public function getSql()
- {
-
- return $this->_expression;
- }
-
- /**
- * __toString
- *
- * @return void
- */
- public function __toString()
- {
- return $this->getSql();
- }
-}
Deleted: trunk/lib/Doctrine/Manager.php
===================================================================
--- trunk/lib/Doctrine/Manager.php 2008-09-13 10:36:58 UTC (rev 4963)
+++ trunk/lib/Doctrine/Manager.php 2008-09-13 12:40:17 UTC (rev 4964)
@@ -1,837 +0,0 @@
-<?php
-/*
- * $Id$
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This software consists of voluntary contributions made by many individuals
- * and is licensed under the LGPL. For more information, see
- * <http://www.phpdoctrine.org>.
- */
-
-/**
- *
- * Doctrine_Manager is the base component of all doctrine based projects.
- * It opens and keeps track of all connections (database connections).
- *
- * @package Doctrine
- * @subpackage Manager
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @link www.phpdoctrine.org
- * @since 1.0
- * @version $Revision$
- * @author Konsta Vesterinen <[EMAIL PROTECTED]>
- * @todo Remove.
- */
-class Doctrine_Manager implements Doctrine_Common_Configurable, Countable,
IteratorAggregate
-{
- /**
- * @var array $connections an array containing all the opened
connections
- */
- protected $_connections = array();
-
- /**
- * @var array $bound an array containing all components
that have a bound connection
- */
- protected $_bound = array();
-
- /**
- * @var integer $index the incremented index
- */
- protected $_index = 0;
-
- /**
- * @var integer $currIndex the current connection index
- */
- protected $_currIndex = 0;
-
- /**
- * @var string $root root directory
- */
- protected $_root;
-
- /**
- * @var Doctrine_Query_Registry the query registry
- */
- protected $_queryRegistry;
-
- /**
- *
- */
- protected static $driverMap = array('oci' => 'oracle');
-
- /**
- * constructor
- *
- * this is private constructor (use getInstance to get an instance of this
class)
- */
- private function __construct()
- {
- $this->_root = dirname(__FILE__);
- }
-
- /**
- * setDefaultAttributes
- * sets default attributes
- *
- * @todo I do not understand the flow here. Explain or refactor?
- * @return boolean
- */
- public function setDefaultAttributes()
- {
- static $init = false;
- if ( ! $init) {
- $init = true;
- $attributes = array(
- Doctrine::ATTR_RESULT_CACHE => null,
- Doctrine::ATTR_QUERY_CACHE => null,
- Doctrine::ATTR_LOAD_REFERENCES => true,
- Doctrine::ATTR_LISTENER => new
Doctrine_EventListener(),
- Doctrine::ATTR_RECORD_LISTENER => null,
- Doctrine::ATTR_THROW_EXCEPTIONS => true,
- Doctrine::ATTR_QUERY_LIMIT =>
Doctrine::LIMIT_RECORDS,
- Doctrine::ATTR_IDXNAME_FORMAT => "%s_idx",
- Doctrine::ATTR_SEQNAME_FORMAT => "%s_seq",
- Doctrine::ATTR_TBLNAME_FORMAT => "%s",
- Doctrine::ATTR_QUOTE_IDENTIFIER => false,
- Doctrine::ATTR_SEQCOL_NAME => 'id',
- Doctrine::ATTR_PORTABILITY =>
Doctrine::PORTABILITY_ALL,
- Doctrine::ATTR_EXPORT =>
Doctrine::EXPORT_ALL,
- Doctrine::ATTR_DECIMAL_PLACES => 2,
- Doctrine::ATTR_DEFAULT_PARAM_NAMESPACE => 'doctrine'
- );
- foreach ($attributes as $attribute => $value) {
- $old = $this->getAttribute($attribute);
- if ($old === null) {
- $this->setAttribute($attribute,$value);
- }
- }
- return true;
- }
- return false;
- }
-
- public function hasAttribute($key)
- {
- return false;
- }
-
- public function setAttribute($name, $value) {}
- public function getAttribute($name) {
- if ($name == Doctrine::ATTR_MODEL_LOADING) {
- return Doctrine::MODEL_LOADING_CONSERVATIVE;
- }
- }
-
- /**
- * returns the root directory of Doctrine
- *
- * @return string
- * @todo Better name.
- */
- final public function getRoot()
- {
- return $this->_root;
- }
-
- /**
- * getInstance
- * returns an instance of this class
- * (this class uses the singleton pattern)
- *
- * @return Doctrine_Manager
- */
- public static function getInstance()
- {
- static $instance;
- if ( ! isset($instance)) {
- $instance = new self();
- }
- return $instance;
- }
-
- /**
- * getQueryRegistry
- * lazy-initializes the query registry object and returns it
- *
- * @return Doctrine_Query_Registry
- */
- public function getQueryRegistry()
- {
- if ( ! isset($this->_queryRegistry)) {
- $this->_queryRegistry = new Doctrine_Query_Registry;
- }
- return $this->_queryRegistry;
- }
-
- /**
- * setQueryRegistry
- * sets the query registry
- *
- * @return Doctrine_Manager this object
- */
- public function setQueryRegistry(Doctrine_Query_Registry $registry)
- {
- $this->_queryRegistry = $registry;
-
- return $this;
- }
-
- /**
- * fetch
- * fetches data using the provided queryKey and
- * the associated query in the query registry
- *
- * if no query for given queryKey is being found a
- * Doctrine_Query_Registry exception is being thrown
- *
- * @param string $queryKey the query key
- * @param array $params prepared statement params (if any)
- * @return mixed the fetched data
- */
- public function find($queryKey, $params = array(), $hydrationMode =
Doctrine::HYDRATE_RECORD)
- {
- return Doctrine_Manager::getInstance()
- ->getQueryRegistry()
- ->get($queryKey)
- ->execute($params, $hydrationMode);
- }
-
- /**
- * fetchOne
- * fetches data using the provided queryKey and
- * the associated query in the query registry
- *
- * if no query for given queryKey is being found a
- * Doctrine_Query_Registry exception is being thrown
- *
- * @param string $queryKey the query key
- * @param array $params prepared statement params (if any)
- * @return mixed the fetched data
- */
- public function findOne($queryKey, $params = array(), $hydrationMode =
Doctrine::HYDRATE_RECORD)
- {
- return Doctrine_Manager::getInstance()
- ->getQueryRegistry()
- ->get($queryKey)
- ->fetchOne($params, $hydrationMode);
- }
-
- /**
- * connection
- *
- * if the adapter parameter is set this method acts as
- * a short cut for
Doctrine_Manager::getInstance()->openConnection($adapter, $name);
- *
- * if the adapter paramater is not set this method acts as
- * a short cut for Doctrine_Manager::getInstance()->getCurrentConnection()
- *
- * @param PDO|Doctrine_Adapter_Interface $adapter database driver
- * @param string $name name of the
connection, if empty numeric key is used
- * @throws Doctrine_Manager_Exception if trying to bind a
connection with an existing name
- * @return Doctrine_Connection
- */
- public static function connection($adapter = null, $name = null)
- {
- if ($adapter == null) {
- return Doctrine_Manager::getInstance()->getCurrentConnection();
- } else {
- return Doctrine_Manager::getInstance()->openConnection($adapter,
$name);
- }
- }
-
- /**
- * openConnection
- * opens a new connection and saves it to Doctrine_Manager->connections
- *
- * @param PDO|Doctrine_Adapter_Interface $adapter database driver
- * @param string $name name of the
connection, if empty numeric key is used
- * @throws Doctrine_Manager_Exception if trying to bind a
connection with an existing name
- * @throws Doctrine_Manager_Exception if trying to open
connection for unknown driver
- * @return Doctrine_Connection
- */
- public function openConnection($adapter, $name = null, $setCurrent = true)
- {
- if (is_object($adapter)) {
- if ( ! ($adapter instanceof PDO) && !
in_array('Doctrine_Adapter_Interface', class_implements($adapter))) {
- throw new Doctrine_Manager_Exception("First argument should be
an instance of PDO or implement Doctrine_Adapter_Interface");
- }
-
- $driverName = $adapter->getAttribute(Doctrine::ATTR_DRIVER_NAME);
- } else if (is_array($adapter)) {
- if ( ! isset($adapter[0])) {
- throw new Doctrine_Manager_Exception('Empty data source name
given.');
- }
- $e = explode(':', $adapter[0]);
-
- if ($e[0] == 'uri') {
- $e[0] = 'odbc';
- }
-
- $parts['dsn'] = $adapter[0];
- $parts['scheme'] = $e[0];
- $parts['user'] = (isset($adapter[1])) ? $adapter[1] : null;
- $parts['pass'] = (isset($adapter[2])) ? $adapter[2] : null;
-
- $driverName = $e[0];
- $adapter = $parts;
- } else {
- $parts = $this->parseDsn($adapter);
- $driverName = $parts['scheme'];
- $adapter = $parts;
- }
-
- // initialize the default attributes
- $this->setDefaultAttributes();
-
- if ($name !== null) {
- $name = (string) $name;
- if (isset($this->_connections[$name])) {
- if ($setCurrent) {
- $this->_currIndex = $name;
- }
- return $this->_connections[$name];
- }
- } else {
- $name = $this->_index;
- $this->_index++;
- }
-
- $drivers = array('mysql' => 'Doctrine_Connection_Mysql',
- 'sqlite' => 'Doctrine_Connection_Sqlite',
- 'pgsql' => 'Doctrine_Connection_Pgsql',
- 'oci' => 'Doctrine_Connection_Oracle',
- 'oci8' => 'Doctrine_Connection_Oracle',
- 'oracle' => 'Doctrine_Connection_Oracle',
- 'mssql' => 'Doctrine_Connection_Mssql',
- 'dblib' => 'Doctrine_Connection_Mssql',
- 'firebird' => 'Doctrine_Connection_Firebird',
- 'informix' => 'Doctrine_Connection_Informix',
- 'mock' => 'Doctrine_Connection_Mock');
-
- if ( ! isset($drivers[$driverName])) {
- throw new Doctrine_Manager_Exception('Unknown driver ' .
$driverName);
- }
-
- $className = $drivers[$driverName];
- $conn = new $className($adapter);
- $conn->setName($name);
-
- $this->_connections[$name] = $conn;
-
- if ($setCurrent) {
- $this->_currIndex = $name;
- }
- return $this->_connections[$name];
- }
-
- /**
- * parsePdoDsn
- *
- * @param array $dsn An array of dsn information
- * @return array The array parsed
- * @todo package:dbal
- */
- public function parsePdoDsn($dsn)
- {
- $parts = array();
-
- $names = array('dsn', 'scheme', 'host', 'port', 'user', 'pass',
'path', 'query', 'fragment');
-
- foreach ($names as $name) {
- if ( ! isset($parts[$name])) {
- $parts[$name] = null;
- }
- }
-
- $e = explode(':', $dsn);
- $parts['scheme'] = $e[0];
- $parts['dsn'] = $dsn;
-
- $e = explode(';', $e[1]);
- foreach ($e as $string) {
- if ($string) {
- $e2 = explode('=', $string);
-
- if (isset($e2[0]) && isset($e2[1])) {
- list($key, $value) = $e2;
- $parts[$key] = $value;
- }
- }
- }
-
- return $parts;
- }
-
- /**
- * parseDsn
- *
- * @param string $dsn
- * @return array Parsed contents of DSN
- * @todo package:dbal
- */
- public function parseDsn($dsn)
- {
- // fix sqlite dsn so that it will parse correctly
- if (false !== strpos($dsn, ':///')) {
- // replace windows directory separators
- $dsn = str_replace("\\", "/", $dsn);
- // replace file:/// format with parse_url()-compatible file://
- $dsn = str_replace(":///", "://", $dsn);
- }
-
- // silence any warnings
- $parts = @parse_url($dsn);
-
- $names = array('dsn', 'scheme', 'host', 'port', 'user', 'pass',
'path', 'query', 'fragment');
-
- foreach ($names as $name) {
- if ( ! isset($parts[$name])) {
- $parts[$name] = null;
- }
- }
-
- if (count($parts) == 0 || ! isset($parts['scheme'])) {
- throw new Doctrine_Manager_Exception('Empty data source name');
- }
-
- switch ($parts['scheme']) {
- case 'sqlite':
- case 'sqlite2':
- case 'sqlite3':
- if (isset($parts['host']) && $parts['host'] == ':memory') {
- $parts['database'] = ':memory:';
- $parts['dsn'] = 'sqlite::memory:';
- } else {
- //fix windows dsn we have to add host: to path and set
host to null
- if (isset($parts['host'])) {
- $parts['path'] = $parts['host'] . ":" . $parts["path"];
- $parts["host"] = null;
- }
- $parts['database'] = $parts['path'];
- $parts['dsn'] = $parts['scheme'] . ':' . $parts['path'];
- }
-
- break;
-
- case 'mssql':
- case 'dblib':
- if ( ! isset($parts['path']) || $parts['path'] == '/') {
- throw new Doctrine_Manager_Exception('No database
available in data source name');
- }
- if (isset($parts['path'])) {
- $parts['database'] = substr($parts['path'], 1);
- }
- if ( ! isset($parts['host'])) {
- throw new Doctrine_Manager_Exception('No hostname set in
data source name');
- }
-
- if (isset(self::$driverMap[$parts['scheme']])) {
- $parts['scheme'] = self::$driverMap[$parts['scheme']];
- }
-
- $parts['dsn'] = $parts['scheme'] . ':host='
- . $parts['host'] . (isset($parts['port']) ? ':'
. $parts['port']:null) . ';dbname='
- . $parts['database'];
-
- break;
-
- case 'mysql':
- case 'informix':
- case 'oci8':
- case 'oci':
- case 'firebird':
- case 'pgsql':
- case 'odbc':
- case 'mock':
- case 'oracle':
- if ( ! isset($parts['path']) || $parts['path'] == '/') {
- throw new Doctrine_Manager_Exception('No database
available in data source name');
- }
- if (isset($parts['path'])) {
- $parts['database'] = substr($parts['path'], 1);
- }
- if ( ! isset($parts['host'])) {
- throw new Doctrine_Manager_Exception('No hostname set in
data source name');
- }
-
- if (isset(self::$driverMap[$parts['scheme']])) {
- $parts['scheme'] = self::$driverMap[$parts['scheme']];
- }
-
- $parts['dsn'] = $parts['scheme'] . ':host='
- . $parts['host'] . (isset($parts['port']) ?
';port=' . $parts['port']:null) . ';dbname='
- . $parts['database'];
-
- break;
- default:
- throw new Doctrine_Manager_Exception('Unknown driver
'.$parts['scheme']);
- }
-
- return $parts;
- }
-
- /**
- * getConnection
- * @param integer $index
- * @return object Doctrine_Connection
- * @throws Doctrine_Manager_Exception if trying to get a non-existent
connection
- */
- public function getConnection($name)
- {
- if ( ! isset($this->_connections[$name])) {
- throw new Doctrine_Manager_Exception('Unknown connection: ' .
$name);
- }
-
- return $this->_connections[$name];
- }
-
- /**
- * Creates a new Doctrine_Query object that uses the currently active
connection.
- *
- * @return Doctrine_Query
- */
- public function createQuery($dql = "")
- {
- $query = new Doctrine_Query($this->getCurrentConnection());
- if ( ! empty($dql)) {
- $query->parseQuery($dql);
- }
-
- return $query;
- }
-
- /**
- * Creates a new native (SQL) query.
- *
- * @return Doctrine_RawSql
- */
- public function createNativeQuery($sql = "")
- {
- $nativeQuery = new Doctrine_RawSql($this->getCurrentConnection());
- if ( ! empty($sql)) {
- $nativeQuery->parseQuery($sql);
- }
-
- return $nativeQuery;
- }
-
- /**
- * Creates a query object out of a registered, named query.
- *
- * @param string $name The name of the query.
- * @return Doctrine_Query The query object.
- */
- public function createNamedQuery($name)
- {
- return $this->_queryRegistry->get($name);
- }
-
- /**
- * getComponentAlias
- * retrieves the alias for given component name
- * if the alias couldn't be found, this method returns the given
- * component name
- *
- * @param string $componentName
- * @return string the component alias
- */
- public function getComponentAlias($componentName)
- {
- if (isset($this->componentAliases[$componentName])) {
- return $this->componentAliases[$componentName];
- }
-
- return $componentName;
- }
-
- /**
- * sets an alias for given component name
- * very useful when building a large framework with a possibility
- * to override any given class
- *
- * @param string $componentName the name of the component
- * @param string $alias
- * @return Doctrine_Manager
- */
- public function setComponentAlias($componentName, $alias)
- {
- $this->componentAliases[$componentName] = $alias;
-
- return $this;
- }
-
- /**
- * getConnectionName
- *
- * @param Doctrine_Connection $conn connection object to be searched
for
- * @return string the name of the connection
- */
- public function getConnectionName(Doctrine_Connection $conn)
- {
- return array_search($conn, $this->_connections, true);
- }
-
- /**
- * bindComponent
- * binds given component to given connection
- * this means that when ever the given component uses a connection
- * it will be using the bound connection instead of the current connection
- *
- * @param string $componentName
- * @param string $connectionName
- * @return boolean
- */
- public function bindComponent($componentName, $connectionName)
- {
- $this->_bound[$componentName] = $connectionName;
- }
-
- /**
- * getConnectionForComponent
- *
- * @param string $componentName
- * @return Doctrine_Connection
- */
- public function getConnectionForComponent($componentName = null)
- {
- if (isset($this->_bound[$componentName])) {
- return $this->getConnection($this->_bound[$componentName]);
- }
- return $this->getCurrentConnection();
- }
-
- /**
- * hasConnectionForComponent
- *
- * @param string $componentName
- * @return boolean
- */
- public function hasConnectionForComponent($componentName = null)
- {
- return isset($this->_bound[$componentName]);
- }
-
- /**
- * getTable
- * this is the same as Doctrine_Connection::getTable() except
- * that it works seamlessly in multi-server/connection environment
- *
- * @see Doctrine_Connection::getTable()
- * @param string $componentName
- * @return Doctrine_Table
- * @deprecated
- */
- public function getTable($componentName)
- {
- return
$this->getConnectionForComponent($componentName)->getTable($componentName);
- }
-
- /**
- * getMapper
- * Returns the mapper object for the given component name.
- *
- * @param string $componentName
- * @return Doctrine_Mapper
- */
- public function getMapper($componentName)
- {
- return
$this->getConnectionForComponent($componentName)->getEntityPersister($componentName);
- }
-
- /**
- * table
- * this is the same as Doctrine_Connection::getTable() except
- * that it works seamlessly in multi-server/connection environment
- *
- * @see Doctrine_Connection::getTable()
- * @param string $componentName
- * @return Doctrine_Table
- */
- public static function table($componentName)
- {
- return Doctrine_Manager::getInstance()
- ->getConnectionForComponent($componentName)
- ->getTable($componentName);
- }
-
- /**
- * closes the connection
- *
- * @param Doctrine_Connection $connection
- * @return void
- */
- public function closeConnection(Doctrine_Connection $connection)
- {
- $connection->close();
-
- $key = array_search($connection, $this->_connections, true);
-
- if ($key !== false) {
- unset($this->_connections[$key]);
- }
- $this->_currIndex = key($this->_connections);
-
- unset($connection);
- }
-
- /**
- * getConnections
- * returns all opened connections
- *
- * @return array
- */
- public function getConnections()
- {
- return $this->_connections;
- }
-
- /**
- * setCurrentConnection
- * sets the current connection to $key
- *
- * @param mixed $key the connection key
- * @throws InvalidKeyException
- * @return void
- */
- public function setCurrentConnection($key)
- {
- $key = (string) $key;
- if ( ! isset($this->_connections[$key])) {
- throw new InvalidKeyException();
- }
- $this->_currIndex = $key;
- }
-
- /**
- * contains
- * whether or not the manager contains specified connection
- *
- * @param mixed $key the connection key
- * @return boolean
- */
- public function contains($key)
- {
- return isset($this->_connections[$key]);
- }
-
- /**
- * count
- * returns the number of opened connections
- *
- * @return integer
- * @todo This is unintuitive.
- */
- public function count()
- {
- return count($this->_connections);
- }
-
- /**
- * getIterator
- * returns an ArrayIterator that iterates through all connections
- *
- * @return ArrayIterator
- */
- public function getIterator()
- {
- return new ArrayIterator($this->_connections);
- }
-
- /**
- * getCurrentConnection
- * returns the current connection
- *
- * @throws Doctrine_Connection_Exception if there are no open
connections
- * @return Doctrine_Connection
- */
- public function getCurrentConnection()
- {
- $i = $this->_currIndex;
- if ( ! isset($this->_connections[$i])) {
- throw new Doctrine_Connection_Exception();
- }
- return $this->_connections[$i];
- }
-
- /**
- * createDatabases
- *
- * Creates databases for connections
- *
- * @param string $specifiedConnections Array of connections you wish to
create the database for
- * @return void
- * @todo package:dbal
- */
- public function createDatabases($specifiedConnections = array())
- {
- if ( ! is_array($specifiedConnections)) {
- $specifiedConnections = (array) $specifiedConnections;
- }
-
- $results = array();
-
- foreach ($this as $name => $connection) {
- if ( ! empty($specifiedConnections) && !in_array($name,
$specifiedConnections)) {
- continue;
- }
-
- $results[$name] = $connection->createDatabase();
- }
-
- return $results;
- }
-
- /**
- * dropDatabases
- *
- * Drops databases for connections
- *
- * @param string $specifiedConnections Array of connections you wish to
drop the database for
- * @return void
- * @todo package:dbal
- */
- public function dropDatabases($specifiedConnections = array())
- {
- if ( ! is_array($specifiedConnections)) {
- $specifiedConnections = (array) $specifiedConnections;
- }
-
- $results = array();
-
- foreach ($this as $name => $connection) {
- if ( ! empty($specifiedConnections) && !in_array($name,
$specifiedConnections)) {
- continue;
- }
-
- $results[$name] = $connection->dropDatabase();
- }
-
- return $results;
- }
-
- /**
- * __toString
- * returns a string representation of this object
- *
- * @return string
- */
- public function __toString()
- {
- $r[] = "<pre>";
- $r[] = "Doctrine_Manager";
- $r[] = "Connections : ".count($this->_connections);
- $r[] = "</pre>";
- return implode("\n",$r);
- }
-}
Modified: trunk/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php
===================================================================
--- trunk/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php
2008-09-13 10:36:58 UTC (rev 4963)
+++ trunk/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php
2008-09-13 12:40:17 UTC (rev 4964)
@@ -54,7 +54,7 @@
/**
* The current hydration mode.
*/
- protected $_hydrationMode = Doctrine::HYDRATE_RECORD;
+ protected $_hydrationMode = Doctrine_Query::HYDRATE_OBJECT;
protected $_nullObject;
Modified: trunk/lib/Doctrine/ORM/Internal/Hydration/StandardHydrator.php
===================================================================
--- trunk/lib/Doctrine/ORM/Internal/Hydration/StandardHydrator.php
2008-09-13 10:36:58 UTC (rev 4963)
+++ trunk/lib/Doctrine/ORM/Internal/Hydration/StandardHydrator.php
2008-09-13 12:40:17 UTC (rev 4964)
@@ -89,14 +89,14 @@
$stmt = $parserResult->getDatabaseStatement();
- if ($hydrationMode == Doctrine::HYDRATE_NONE) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_NONE) {
return $stmt->fetchAll(PDO::FETCH_NUM);
}
$this->_tableAliases = $parserResult->getTableToClassAliasMap();
$this->_queryComponents = $parserResult->getQueryComponents();
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
$driver = new Doctrine_ORM_Internal_Hydration_ArrayDriver();
} else {
$driver = new
Doctrine_ORM_Internal_Hydration_ObjectDriver($this->_em);
@@ -123,7 +123,7 @@
$idTemplate = array();
// Holds the resulting hydrated data structure
- if ($parserResult->isMixedQuery() || $hydrationMode ==
Doctrine::HYDRATE_SCALAR) {
+ if ($parserResult->isMixedQuery() || $hydrationMode ==
Doctrine_Query::HYDRATE_SCALAR) {
$result = array();
} else {
$result = $driver->getElementCollection($rootEntityName);
@@ -145,7 +145,7 @@
$cache = array();
// Evaluate HYDRATE_SINGLE_SCALAR
- if ($hydrationMode == Doctrine::HYDRATE_SINGLE_SCALAR) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_SINGLE_SCALAR) {
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (count($result) > 1 || count($result[0]) > 1) {
throw
Doctrine_ORM_Exceptions_HydrationException::nonUniqueResult();
@@ -154,9 +154,9 @@
}
// Process result set
- while ($data = $stmt->fetch(Doctrine::FETCH_ASSOC)) {
+ while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
// Evaluate HYDRATE_SCALAR
- if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
$result[] = $this->_gatherScalarRowData($data, $cache);
continue;
}
Modified: trunk/lib/Doctrine/Query/ParserRule.php
===================================================================
--- trunk/lib/Doctrine/Query/ParserRule.php 2008-09-13 10:36:58 UTC (rev
4963)
+++ trunk/lib/Doctrine/Query/ParserRule.php 2008-09-13 12:40:17 UTC (rev
4964)
@@ -151,7 +151,8 @@
$class = 'Doctrine_Query_Parser_' . $name;
//echo $class . "\r\n";
-
+ //TODO: This expensive check is not necessary. Should be removed at
the end.
+ // "new $class" will throw an error anyway if the class is not
found.
if ( ! class_exists($class)) {
throw new Doctrine_Query_Parser_Exception(
"Unknown Grammar Rule '$name'. Could not find related compiler
class."
Modified: trunk/lib/Doctrine/Query.php
===================================================================
--- trunk/lib/Doctrine/Query.php 2008-09-13 10:36:58 UTC (rev 4963)
+++ trunk/lib/Doctrine/Query.php 2008-09-13 12:40:17 UTC (rev 4964)
@@ -20,6 +20,8 @@
* <http://www.phpdoctrine.org>.
*/
+#namespace Doctrine::ORM;
+
/**
* A Doctrine_Query object represents a DQL query. It is used to query
databases for
* data in an object-oriented fashion. A DQL query understands relations and
inheritance
@@ -36,7 +38,29 @@
*/
class Doctrine_Query extends Doctrine_Query_Abstract
{
+ /* Hydration mode constants */
/**
+ * Hydrates an object graph. This is the default behavior.
+ */
+ const HYDRATE_OBJECT = 1;
+ /**
+ * Hydrates an array graph.
+ */
+ const HYDRATE_ARRAY = 2;
+ /**
+ * Hydrates a flat, rectangular result set with scalar values.
+ */
+ const HYDRATE_SCALAR = 3;
+ /**
+ * Hydrates a single scalar value.
+ */
+ const HYDRATE_SINGLE_SCALAR = 4;
+ /**
+ * Hydrates nothing.
+ */
+ const HYDRATE_NONE = 5;
+
+ /**
* @var Doctrine_EntityManager The entity manager used by this query
object.
*/
protected $_entityManager;
@@ -54,7 +78,7 @@
/**
* @var string $_sql Cached SQL query.
*/
- protected $_sql = null;
+ protected $_sql;
// Caching Stuff
Modified: trunk/lib/Doctrine.php
===================================================================
--- trunk/lib/Doctrine.php 2008-09-13 10:36:58 UTC (rev 4963)
+++ trunk/lib/Doctrine.php 2008-09-13 12:40:17 UTC (rev 4964)
@@ -31,7 +31,8 @@
* @since 1.0
* @version $Revision$
* @todo Remove all the constants, attributes to the new attribute system,
- * All methods to separate classes.
+ * All methods to appropriate classes.
+ * Finally remove this class.
*/
final class Doctrine
{
Modified: trunk/tests/Orm/Hydration/BasicHydrationTest.php
===================================================================
--- trunk/tests/Orm/Hydration/BasicHydrationTest.php 2008-09-13 10:36:58 UTC
(rev 4963)
+++ trunk/tests/Orm/Hydration/BasicHydrationTest.php 2008-09-13 12:40:17 UTC
(rev 4964)
@@ -16,9 +16,9 @@
public static function hydrationModeProvider()
{
return array(
- array('hydrationMode' => Doctrine::HYDRATE_RECORD),
- array('hydrationMode' => Doctrine::HYDRATE_ARRAY),
- array('hydrationMode' => Doctrine::HYDRATE_SCALAR)
+ array('hydrationMode' => Doctrine_Query::HYDRATE_OBJECT),
+ array('hydrationMode' => Doctrine_Query::HYDRATE_ARRAY),
+ array('hydrationMode' => Doctrine_Query::HYDRATE_SCALAR)
);
}
@@ -76,7 +76,7 @@
$result = $hydrator->hydrateResultSet($this->_createParserResult(
$stmt, $queryComponents, $tableAliasMap, $hydrationMode));
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY || $hydrationMode ==
Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY || $hydrationMode
== Doctrine_Query::HYDRATE_OBJECT) {
$this->assertEquals(2, count($result));
$this->assertEquals(1, $result[0]['id']);
$this->assertEquals('romanb', $result[0]['name']);
@@ -84,13 +84,13 @@
$this->assertEquals('jwage', $result[1]['name']);
}
- if ($hydrationMode == Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_OBJECT) {
$this->assertTrue($result instanceof Doctrine_ORM_Collection);
$this->assertTrue($result[0] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[1] instanceof Doctrine_ORM_Entity);
- } else if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
$this->assertTrue(is_array($result));
- } else if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
$this->assertTrue(is_array($result));
$this->assertEquals(2, count($result));
$this->assertEquals('romanb', $result[0]['u_name']);
@@ -163,11 +163,11 @@
$result = $hydrator->hydrateResultSet($this->_createParserResult(
$stmt, $queryComponents, $tableAliasMap, $hydrationMode,
true));
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
//var_dump($result);
}
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY || $hydrationMode ==
Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY || $hydrationMode
== Doctrine_Query::HYDRATE_OBJECT) {
$this->assertEquals(2, count($result));
$this->assertTrue(is_array($result));
$this->assertTrue(is_array($result[0]));
@@ -185,14 +185,14 @@
$this->assertEquals(91,
$result[1][0]['phonenumbers'][0]['phonenumber']);
}
- if ($hydrationMode == Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_OBJECT) {
$this->assertTrue($result[0][0] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[0][0]['phonenumbers'] instanceof
Doctrine_ORM_Collection);
$this->assertTrue($result[0][0]['phonenumbers'][0] instanceof
Doctrine_ORM_Entity);
$this->assertTrue($result[0][0]['phonenumbers'][1] instanceof
Doctrine_ORM_Entity);
$this->assertTrue($result[1][0] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[1][0]['phonenumbers'] instanceof
Doctrine_ORM_Collection);
- } else if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
$this->assertTrue(is_array($result));
$this->assertEquals(3, count($result));
$this->assertEquals(1, $result[0]['u_id']);
@@ -260,7 +260,7 @@
$stmt, $queryComponents, $tableAliasMap, $hydrationMode,
true));
//var_dump($result);
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY || $hydrationMode ==
Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY || $hydrationMode
== Doctrine_Query::HYDRATE_OBJECT) {
$this->assertEquals(2, count($result));
$this->assertTrue(is_array($result));
$this->assertTrue(is_array($result[0]));
@@ -272,10 +272,10 @@
$this->assertEquals(1, $result[1]['numPhones']);
}
- if ($hydrationMode == Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_OBJECT) {
$this->assertTrue($result[0][0] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[1][0] instanceof Doctrine_ORM_Entity);
- } else if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
$this->assertEquals(2, count($result));
$this->assertEquals(1, $result[0]['u_id']);
@@ -355,7 +355,7 @@
//var_dump($result);
}
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY || $hydrationMode ==
Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY || $hydrationMode
== Doctrine_Query::HYDRATE_OBJECT) {
$this->assertEquals(2, count($result));
$this->assertTrue(is_array($result));
$this->assertTrue(is_array($result[0]));
@@ -376,12 +376,12 @@
$this->assertEquals('JWAGE', $result[1]['nameUpper']);
}
- if ($hydrationMode == Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_OBJECT) {
$this->assertTrue($result[0]['1'] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[1]['2'] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[0]['1']['phonenumbers'] instanceof
Doctrine_ORM_Collection);
$this->assertEquals(2, count($result[0]['1']['phonenumbers']));
- } else if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
// NOTE: Indexing has no effect with HYDRATE_SCALAR
//... asserts to come
}
@@ -491,11 +491,11 @@
$result = $hydrator->hydrateResultSet($this->_createParserResult(
$stmt, $queryComponents, $tableAliasMap, $hydrationMode,
true));
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
//var_dump($result);
}
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY || $hydrationMode ==
Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY || $hydrationMode
== Doctrine_Query::HYDRATE_OBJECT) {
$this->assertEquals(2, count($result));
$this->assertTrue(is_array($result));
$this->assertTrue(is_array($result[0]));
@@ -520,7 +520,7 @@
$this->assertEquals('PHP6', $result[1][0]['articles'][1]['topic']);
}
- if ($hydrationMode == Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_OBJECT) {
$this->assertTrue($result[0][0] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[0][0]['phonenumbers'] instanceof
Doctrine_ORM_Collection);
$this->assertTrue($result[0][0]['phonenumbers'][0] instanceof
Doctrine_ORM_Entity);
@@ -533,7 +533,7 @@
$this->assertTrue($result[1][0]['phonenumbers'][0] instanceof
Doctrine_ORM_Entity);
$this->assertTrue($result[1][0]['articles'][0] instanceof
Doctrine_ORM_Entity);
$this->assertTrue($result[1][0]['articles'][1] instanceof
Doctrine_ORM_Entity);
- } else if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
//...
$this->assertEquals(6, count($result));
//var_dump($result);
@@ -666,11 +666,11 @@
$result = $hydrator->hydrateResultSet($this->_createParserResult(
$stmt, $queryComponents, $tableAliasMap, $hydrationMode,
true));
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
//var_dump($result);
}
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY || $hydrationMode ==
Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY || $hydrationMode
== Doctrine_Query::HYDRATE_OBJECT) {
$this->assertEquals(2, count($result));
$this->assertTrue(is_array($result));
$this->assertTrue(is_array($result[0]));
@@ -704,7 +704,7 @@
$this->assertTrue(isset($result[1][0]['articles'][1]['comments']));
}
- if ($hydrationMode == Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_OBJECT) {
$this->assertTrue($result[0][0] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[1][0] instanceof Doctrine_ORM_Entity);
// phonenumbers
@@ -729,9 +729,9 @@
$this->assertEquals(0,
count($result[1][0]['articles'][0]['comments']));
$this->assertTrue($result[1][0]['articles'][1]['comments']
instanceof Doctrine_ORM_Collection);
$this->assertEquals(0,
count($result[1][0]['articles'][1]['comments']));
- } else if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
//...
- } else if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
//...
// empty comment collections
@@ -831,11 +831,11 @@
$result = $hydrator->hydrateResultSet($this->_createParserResult(
$stmt, $queryComponents, $tableAliasMap, $hydrationMode));
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
//var_dump($result);
}
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY || $hydrationMode ==
Doctrine::HYDRATE_RECORD) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY || $hydrationMode
== Doctrine_Query::HYDRATE_OBJECT) {
$this->assertEquals(2, count($result));
$this->assertTrue(isset($result[0]['boards']));
$this->assertEquals(3, count($result[0]['boards']));
@@ -843,15 +843,15 @@
$this->assertEquals(1, count($result[1]['boards']));
}
- if ($hydrationMode == Doctrine::HYDRATE_ARRAY) {
+ if ($hydrationMode == Doctrine_Query::HYDRATE_ARRAY) {
$this->assertTrue(is_array($result));
$this->assertTrue(is_array($result[0]));
$this->assertTrue(is_array($result[1]));
- } else if ($hydrationMode == Doctrine::HYDRATE_RECORD) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_OBJECT) {
$this->assertTrue($result instanceof Doctrine_ORM_Collection);
$this->assertTrue($result[0] instanceof Doctrine_ORM_Entity);
$this->assertTrue($result[1] instanceof Doctrine_ORM_Entity);
- } else if ($hydrationMode == Doctrine::HYDRATE_SCALAR) {
+ } else if ($hydrationMode == Doctrine_Query::HYDRATE_SCALAR) {
//...
}
@@ -922,16 +922,16 @@
if ($name == 'result1') {
$result = $hydrator->hydrateResultSet($this->_createParserResult(
- $stmt, $queryComponents, $tableAliasMap,
Doctrine::HYDRATE_SINGLE_SCALAR));
+ $stmt, $queryComponents, $tableAliasMap,
Doctrine_Query::HYDRATE_SINGLE_SCALAR));
$this->assertEquals('romanb', $result);
} else if ($name == 'result2') {
$result = $hydrator->hydrateResultSet($this->_createParserResult(
- $stmt, $queryComponents, $tableAliasMap,
Doctrine::HYDRATE_SINGLE_SCALAR));
+ $stmt, $queryComponents, $tableAliasMap,
Doctrine_Query::HYDRATE_SINGLE_SCALAR));
$this->assertEquals(1, $result);
} else if ($name == 'result3' || $name == 'result4') {
try {
$result =
$hydrator->hydrateResultSet($this->_createParserResult(
- $stmt, $queryComponents, $tableAliasMap,
Doctrine::HYDRATE_SINGLE_SCALAR));
+ $stmt, $queryComponents, $tableAliasMap,
Doctrine_Query::HYDRATE_SINGLE_SCALAR));
$this->fail();
} catch (Doctrine_ORM_Exceptions_HydrationException $ex) {}
}
Modified: trunk/tests/lib/DoctrineTestInit.php
===================================================================
--- trunk/tests/lib/DoctrineTestInit.php 2008-09-13 10:36:58 UTC (rev
4963)
+++ trunk/tests/lib/DoctrineTestInit.php 2008-09-13 12:40:17 UTC (rev
4964)
@@ -2,10 +2,25 @@
require_once 'PHPUnit/Framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
-require_once '../lib/Doctrine.php';
-spl_autoload_register(array('Doctrine', 'autoload'));
+//require_once '../lib/Doctrine.php';
+require_once '../lib/Doctrine/Common/ClassLoader.php';
-// Some of these classes depends on Doctrine_* classes
+$classLoader = new Doctrine_Common_ClassLoader();
+// checking for existance should not be necessary, remove as soon as possible
+$classLoader->setCheckFileExists(true);
+$classLoader->register();
+
+$modelDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . 'models';
+set_include_path(
+ get_include_path()
+ . PATH_SEPARATOR . dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib'
+ . PATH_SEPARATOR . $modelDir . DIRECTORY_SEPARATOR . 'cms'
+ . PATH_SEPARATOR . $modelDir . DIRECTORY_SEPARATOR . 'company'
+ . PATH_SEPARATOR . $modelDir . DIRECTORY_SEPARATOR . 'ecommerce'
+ . PATH_SEPARATOR . $modelDir . DIRECTORY_SEPARATOR . 'forum'
+);
+
+// Some of these classes depend on Doctrine_* classes
require_once 'Doctrine_TestCase.php';
require_once 'Doctrine_TestUtil.php';
require_once 'Doctrine_DbalTestCase.php';
@@ -15,22 +30,3 @@
require_once 'Doctrine_OrmTestSuite.php';
require_once 'Doctrine_OrmFunctionalTestSuite.php';
require_once 'Doctrine_DbalTestSuite.php';
-
-$modelDir = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . 'models';
-Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_MODEL_LOADING,
Doctrine::MODEL_LOADING_CONSERVATIVE);
-Doctrine::loadModels($modelDir);
-
-/*
-//spl_autoload_register(array('Doctrine_TestUtil', 'autoload'));
-
-$modelDir = dirname(__FILE__)
- . DIRECTORY_SEPARATOR . '..'
- . DIRECTORY_SEPARATOR . 'models'
- . DIRECTORY_SEPARATOR;
-
-set_include_path(
- get_include_path()
- . PATH_SEPARATOR . $modelDir . 'cms'
- . PATH_SEPARATOR . $modelDir . 'ecommerce'
- . PATH_SEPARATOR . $modelDir . 'forum');
-*/
\ No newline at end of file
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"doctrine-svn" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.co.uk/group/doctrine-svn?hl=en-GB
-~----------~----~----~----~------~----~------~--~---