.
*/
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;
}
}