Select Git revision
-
Thomas Müller authoredThomas Müller authored
autoloader.php 4.63 KiB
<?php
/**
* Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace OC;
class Autoloader {
private $useGlobalClassPath = true;
private $prefixPaths = array();
private $classPaths = array();
/**
* Optional low-latency memory cache for class to path mapping.
* @var \OC\Memcache\Cache
*/
protected $memoryCache;
/**
* Add a custom prefix to the autoloader
*
* @param string $prefix
* @param string $path
*/
public function registerPrefix($prefix, $path) {
$this->prefixPaths[$prefix] = $path;
}
/**
* Add a custom classpath to the autoloader
*
* @param string $class
* @param string $path
*/
public function registerClass($class, $path) {
$this->classPaths[$class] = $path;
}
/**
* disable the usage of the global classpath \OC::$CLASSPATH
*/
public function disableGlobalClassPath() {
$this->useGlobalClassPath = false;
}
/**
* enable the usage of the global classpath \OC::$CLASSPATH
*/
public function enableGlobalClassPath() {
$this->useGlobalClassPath = true;
}
/**
* get the possible paths for a class
*
* @param string $class
* @return array|bool an array of possible paths or false if the class is not part of ownCloud
*/
public function findClass($class) {
$class = trim($class, '\\');
$paths = array();
if (array_key_exists($class, $this->classPaths)) {
$paths[] = $this->classPaths[$class];
} else if ($this->useGlobalClassPath and array_key_exists($class, \OC::$CLASSPATH)) {