svn: /pear2/Autoload/trunk/src/ Autoload.php
[email protected] (Brett Bieber) Wed, 22 Sep 2010 03:28:18 +0000
| Newsgroups | php.pear.cvs,php.pear.core |
|---|---|
| Message-ID | <[email protected]> |
saltybeagle Wed, 22 Sep 2010 03:28:18 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=303659
Log:
Remove the dependency on include_path for a couple of reasons. 1. Speed. 2. include_path can be externally modified which can cause files that exist to not be loaded.
Changed paths:
U pear2/Autoload/trunk/src/Autoload.php
Modified: pear2/Autoload/trunk/src/Autoload.php
===================================================================
--- pear2/Autoload/trunk/src/Autoload.php 2010-09-22 02:59:36 UTC (rev 303658)
+++ pear2/Autoload/trunk/src/Autoload.php 2010-09-22 03:28:18 UTC (rev 303659)
@@ -53,17 +53,13 @@
/**
* Add a path
*
- * @param string $path The directory to add to the include path
+ * @param string $path The directory to add to the set of PEAR2 paths
*
* @return void
*/
protected static function addPath($path)
{
if (!in_array($path, self::$paths)) {
- $paths = explode(PATH_SEPARATOR, get_include_path());
- if (!in_array($path, $paths)) {
- set_include_path(get_include_path() . PATH_SEPARATOR . $path);
- }
self::$paths[] = $path;
}
}
@@ -80,17 +76,19 @@
if (strtolower(substr($class, 0, 6)) !== 'pear2\\') {
return false;
}
- $file = str_replace(array('_', '\\'), DIRECTORY_SEPARATOR, $class) . '.php';
- $fp = @fopen($file, 'r', true);
- if ($fp) {
- fclose($fp);
- require $file;
- if (!class_exists($class, false) && !interface_exists($class, false)) {
- die(new \Exception('Class ' . $class . ' was not present in ' .
- $file . ' (include_path="' . get_include_path() .
- '") [PEAR2_Autoload version 1.1]'));
+ foreach (self::$paths as $path) {
+ $file = str_replace(array('_', '\\'), DIRECTORY_SEPARATOR, $class) . '.php';
+ $fp = @fopen($path . DIRECTORY_SEPARATOR . $file, 'r', true);
+ if ($fp) {
+ fclose($fp);
+ require $path . DIRECTORY_SEPARATOR . $file;
+ if (!class_exists($class, false) && !interface_exists($class, false)) {
+ die(new \Exception('Class ' . $class . ' was not present in ' .
+ $file . ' (include_path="' . get_include_path() .
+ '") [PEAR2_Autoload version 1.1]'));
+ }
+ return true;
}
- return true;
}
$e = new \Exception('Class ' . $class . ' could not be loaded from ' .
$file . ', file does not exist (include_path="' . get_include_path() .