Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
c6f0699d
Commit
c6f0699d
authored
Mar 24, 2010
by
jwage
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2.0] Removing deprecated GlobalClassLoader and IsolatedClassLoader and updating tests
parent
23979256
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
6 additions
and
262 deletions
+6
-262
GlobalClassLoader.php
lib/Doctrine/Common/GlobalClassLoader.php
+0
-133
IsolatedClassLoader.php
lib/Doctrine/Common/IsolatedClassLoader.php
+0
-111
ClassLoaderTest.php
tests/Doctrine/Tests/Common/ClassLoaderTest.php
+6
-18
No files found.
lib/Doctrine/Common/GlobalClassLoader.php
deleted
100644 → 0
View file @
23979256
<?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.doctrine-project.org>.
*/
namespace
Doctrine\Common
;
/**
* A <tt>GlobalClassLoader</tt> 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 <tt>GlobalClassLoader</tt> 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 <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*
* @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
lib/Doctrine/Common/IsolatedClassLoader.php
deleted
100644 → 0
View file @
23979256
<?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.doctrine-project.org>.
*/
namespace
Doctrine\Common
;
/**
* An <tt>IsolatedClassLoader</tt> 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 <roman@code-factory.org>
* @since 2.0
*
* @deprecated Use Doctrine\Common\ClassLoader instead.
*/
class
IsolatedClassLoader
{
private
$_fileExtension
=
'.php'
;
private
$_namespace
;
private
$_basePath
;
private
$_namespaceSeparator
=
'\\'
;
/**
* Creates a new <tt>IsolatedClassLoader</tt> 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
tests/Doctrine/Tests/Common/ClassLoaderTest.php
View file @
c6f0699d
...
...
@@ -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
test
GlobalClassLoaderThrowsExceptionIfPutInChain
()
public
function
test
ClassLoader
()
{
$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_Class
A'), fals
e);
$this
->
assertEquals
(
$classLoader
->
loadClass
(
'ClassLoaderTest_Class
B'
),
tru
e
);
$this
->
assertEquals
(
$classLoader
->
loadClass
(
'ClassLoaderTest_ClassC'
),
true
);
}
*/
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment