From c6f0699dbf66dd9e8033059d8bd2e046db5efa20 Mon Sep 17 00:00:00 2001 From: jwage Date: Wed, 24 Mar 2010 16:22:49 +0000 Subject: [PATCH] [2.0] Removing deprecated GlobalClassLoader and IsolatedClassLoader and updating tests --- lib/Doctrine/Common/GlobalClassLoader.php | 133 ------------------ lib/Doctrine/Common/IsolatedClassLoader.php | 111 --------------- .../Doctrine/Tests/Common/ClassLoaderTest.php | 24 +--- 3 files changed, 6 insertions(+), 262 deletions(-) delete mode 100644 lib/Doctrine/Common/GlobalClassLoader.php delete mode 100644 lib/Doctrine/Common/IsolatedClassLoader.php diff --git a/lib/Doctrine/Common/GlobalClassLoader.php b/lib/Doctrine/Common/GlobalClassLoader.php deleted file mode 100644 index 727051038..000000000 --- a/lib/Doctrine/Common/GlobalClassLoader.php +++ /dev/null @@ -1,133 +0,0 @@ -. - */ - -namespace Doctrine\Common; - -/** - * A GlobalClassLoader is an autoloader for class files that can be - * installed on the SPL autoload stack. A GlobalClassLoader must be the only - * autoloader on the stack and be used for all classes. - * - * The GlobalClassLoader assumes the PHP 5.3 namespace separator but - * is also compatible with the underscore "_" namespace separator. - * - * A recommended class loading setup for optimal performance looks as follows: - * - * 1) Use a GlobalClassLoader. - * 2) Reduce the include_path to only the path to the PEAR packages. - * 2) Register the namespaces of any other (non-pear) class library with their - * absolute base paths, like this: $gcl->registerNamespace('Zend', '/path/to/zf-lib'); - * - * If no base path is configured for a certain namespace, the GlobalClassLoader relies on - * the include_path. - * - * @license http://www.opensource.org/licenses/lgpl-license.php LGPL - * @link www.doctrine-project.org - * @since 2.0 - * @version $Revision: 3938 $ - * @author Guilherme Blanco - * @author Jonathan Wage - * @author Roman Borschel - * - * @deprecated Use Doctrine\Common\ClassLoader instead. - */ -class GlobalClassLoader -{ - /** - * @var string File extension used for classes - */ - private $_defaultFileExtension = '.php'; - - /** - * @var array The custom file extensions of class libraries. - */ - private $_fileExtensions = array(); - - /** - * @var array Hashmap of base paths to class libraries. - */ - private $_basePaths = array(); - - /** - * Installs this class loader on the SPL autoload stack as the only class loader. - * - * @throws Exception If the SPL autoload stack already contains other autoloaders. - */ - public function register() - { - if (spl_autoload_functions() !== false) { - throw new CommonException("Autoload stack is not empty. GlobalClassLoader does not work " - . "in an autoload stack."); - } - spl_autoload_register(array($this, 'loadClass')); - } - - /** - * Sets the default file extension of class files. - * - * @param string $extension - * @return void - */ - public function setDefaultFileExtension($extension) - { - $this->_fileExtension = $extension; - } - - /** - * Sets a static base path for classes with a certain prefix that is prepended - * to the path derived from the class itself. - * - * @param string $classPrefix The prefix (root namespace) of the class library. - * @param string $basePath The base path to the class library. - * @param string $fileExtension The custom file extension used by the class files in the namespace. - */ - public function registerNamespace($namespace, $basePath, $fileExtension = null) - { - $this->_basePaths[$namespace] = $basePath; - if ($fileExtension !== null) { - $this->_fileExtensions[$namespace] = $fileExtension; - } - } - - /** - * 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) - { - $prefix = ''; - $separator = '\\'; - - if (($pos = strpos($className, $separator)) !== false) { - $prefix = substr($className, 0, strpos($className, $separator)); - } else if (($pos = strpos($className, '_')) !== false) { - // Support for '_' namespace separator for compatibility with the "old" standard - $prefix = substr($className, 0, strpos($className, '_')); - $separator = '_'; - } - - require ((isset($this->_basePaths[$prefix])) ? $this->_basePaths[$prefix] . DIRECTORY_SEPARATOR : '') - . str_replace($separator, DIRECTORY_SEPARATOR, $className) - . (isset($this->_fileExtensions[$prefix]) ? $this->_fileExtensions[$prefix] : $this->_defaultFileExtension); - } -} \ No newline at end of file diff --git a/lib/Doctrine/Common/IsolatedClassLoader.php b/lib/Doctrine/Common/IsolatedClassLoader.php deleted file mode 100644 index 48768e396..000000000 --- a/lib/Doctrine/Common/IsolatedClassLoader.php +++ /dev/null @@ -1,111 +0,0 @@ -. - */ - -namespace Doctrine\Common; - -/** - * An IsolatedClassLoader is an autoloader for class files that can be - * installed on the SPL autoload stack. It is a class loader that loads only classes - * of a specific namespace and is suitable for working together with other autoloaders - * in the SPL autoload stack. - * - * If no base path is configured, an IsolatedClassLoader relies on the include_path. - * - * @author Roman Borschel - * @since 2.0 - * - * @deprecated Use Doctrine\Common\ClassLoader instead. - */ -class IsolatedClassLoader -{ - private $_fileExtension = '.php'; - private $_namespace; - private $_basePath; - private $_namespaceSeparator = '\\'; - - /** - * Creates a new IsolatedClassLoader that loads classes of the - * specified namespace. - * - * @param string $ns The namespace to use. - */ - public function __construct($ns = null) - { - $this->_namespace = $ns; - } - - /** - * Sets the namespace separator used by classes in the namespace of this class loader. - * - * @param string $sep The separator to use. - */ - public function setNamespaceSeparator($sep) - { - $this->_namespaceSeparator = $sep; - } - - /** - * Sets the base include path for all class files in the namespace of this class loader. - * - * @param string $basePath - */ - public function setBasePath($basePath) - { - $this->_basePath = $basePath; - } - - /** - * Sets the file extension of class files in the namespace of this class loader. - * - * @param string $fileExtension - */ - public function setFileExtension($fileExtension) - { - $this->_fileExtension = $fileExtension; - } - - /** - * Installs this class loader on the SPL autoload stack. - */ - public function register() - { - spl_autoload_register(array($this, 'loadClass')); - } - - /** - * 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 ($this->_namespace && strpos($className, $this->_namespace.$this->_namespaceSeparator) !== 0) { - return false; - } - - require ($this->_basePath !== null ? $this->_basePath . DIRECTORY_SEPARATOR : '') - . str_replace($this->_namespaceSeparator, DIRECTORY_SEPARATOR, $className) - . $this->_fileExtension; - - return true; - } -} \ No newline at end of file diff --git a/tests/Doctrine/Tests/Common/ClassLoaderTest.php b/tests/Doctrine/Tests/Common/ClassLoaderTest.php index cd5bf5daa..e18dff88d 100644 --- a/tests/Doctrine/Tests/Common/ClassLoaderTest.php +++ b/tests/Doctrine/Tests/Common/ClassLoaderTest.php @@ -2,33 +2,21 @@ namespace Doctrine\Tests\Common; -use Doctrine\Common\GlobalClassLoader, - Doctrine\Common\IsolatedClassLoader; +use Doctrine\Common\ClassLoader; require_once __DIR__ . '/../TestInit.php'; class ClassLoaderTest extends \Doctrine\Tests\DoctrineTestCase { - public function testGlobalClassLoaderThrowsExceptionIfPutInChain() + public function testClassLoader() { - $this->setExpectedException('Doctrine\Common\CommonException'); - - $classLoader1 = new IsolatedClassLoader('Foo'); - $classLoader1->register(); - - $globalClassLoader = new GlobalClassLoader; - $globalClassLoader->register(); - } - - /*public function testIsolatedClassLoaderReturnsFalseOnClassExists() - { - $classLoader = new IsolatedClassLoader('ClassLoaderTest'); - $classLoader->setBasePath( __DIR__); + $classLoader = new ClassLoader('ClassLoaderTest'); + $classLoader->setIncludePath(__DIR__); $classLoader->setFileExtension('.class.php'); $classLoader->setNamespaceSeparator('_'); $this->assertEquals($classLoader->loadClass('ClassLoaderTest_ClassA'), true); - $this->assertEquals($classLoader->loadClass('ClassLoaderTest_ClassA'), false); + $this->assertEquals($classLoader->loadClass('ClassLoaderTest_ClassB'), true); $this->assertEquals($classLoader->loadClass('ClassLoaderTest_ClassC'), true); - }*/ + } } \ No newline at end of file