From 930af24c7f08606b23d7ad7670ba03ff2bd9076a Mon Sep 17 00:00:00 2001 From: Daniele Alessandri Date: Sun, 18 Mar 2012 18:00:00 +0100 Subject: [PATCH] Make Predis\Autoloader faster. --- lib/Predis/Autoloader.php | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/Predis/Autoloader.php b/lib/Predis/Autoloader.php index 3d59e09b..091fdbb4 100644 --- a/lib/Predis/Autoloader.php +++ b/lib/Predis/Autoloader.php @@ -15,19 +15,22 @@ namespace Predis; * Implements a lightweight PSR-0 compliant autoloader. * * @author Eric Naeseth + * @author Daniele Alessandri */ class Autoloader { - private $baseDir; + private $directory; private $prefix; + private $prefixLength; /** * @param string $baseDirectory Base directory where the source files are located. */ - public function __construct($baseDirectory = null) + public function __construct($baseDirectory = __DIR__) { - $this->baseDir = $baseDirectory ?: dirname(__FILE__); + $this->directory = $baseDirectory; $this->prefix = __NAMESPACE__ . '\\'; + $this->prefixLength = strlen($this->prefix); } /** @@ -45,13 +48,9 @@ class Autoloader */ public function autoload($className) { - if (0 !== strpos($className, $this->prefix)) { - return; + if (0 === strpos($className, $this->prefix)) { + $parts = explode('\\', substr($className, $this->prefixLength)); + require($this->directory.DIRECTORY_SEPARATOR.implode(DIRECTORY_SEPARATOR, $parts).'.php'); } - - $relativeClassName = substr($className, strlen($this->prefix)); - $classNameParts = explode('\\', $relativeClassName); - - require_once $this->baseDir.DIRECTORY_SEPARATOR.implode(DIRECTORY_SEPARATOR, $classNameParts).'.php'; } }