Chris@14: Chris@14: */ Chris@14: Chris@14: namespace WebDriver; Chris@14: Chris@14: /** Chris@14: * WebDriver\ClassLoader (autoloader) class Chris@14: * Chris@14: * @package WebDriver Chris@14: */ Chris@14: final class ClassLoader Chris@14: { Chris@14: /** Chris@14: * Load class Chris@14: * Chris@14: * @param string $class Class name Chris@14: */ Chris@14: public static function loadClass($class) Chris@14: { Chris@14: $file = strpos($class, '\\') !== false Chris@14: ? str_replace('\\', DIRECTORY_SEPARATOR, $class) Chris@14: : str_replace('_', DIRECTORY_SEPARATOR, $class); Chris@14: Chris@14: $path = dirname(__DIR__) . DIRECTORY_SEPARATOR . $file . '.php'; Chris@14: Chris@14: if (file_exists($path)) { Chris@14: include_once $path; Chris@14: } Chris@14: } Chris@14: Chris@14: /** Chris@14: * Autoloader Chris@14: * Chris@14: * @param string $class Class name Chris@14: */ Chris@14: public static function autoload($class) Chris@14: { Chris@14: try { Chris@14: self::loadClass($class); Chris@14: } catch (\Exception $e) { Chris@14: } Chris@14: } Chris@14: } Chris@14: Chris@14: if (function_exists('spl_autoload_register')) { Chris@14: /** Chris@14: * use the SPL autoload stack Chris@14: */ Chris@14: spl_autoload_register(array('WebDriver\ClassLoader', 'autoload')); Chris@14: Chris@14: /** Chris@14: * preserve any existing __autoload Chris@14: */ Chris@14: if (function_exists('__autoload')) { Chris@14: spl_autoload_register('__autoload'); Chris@14: } Chris@14: } else { Chris@14: /** Chris@14: * Our fallback; only one __autoload per PHP instance Chris@14: * Chris@14: * @param string $class Class name Chris@14: */ Chris@14: function __autoload($class) Chris@14: { Chris@14: ClassLoader::autoload($class); Chris@14: } Chris@14: }