24 #require_once 'Zend/Loader.php'; 92 if (
null === self::$_instance) {
93 self::$_instance =
new self();
105 self::$_instance =
null;
118 foreach ($self->getClassAutoloaders(
$class) as $autoloader) {
120 if ($autoloader->autoload(
$class)) {
123 }
elseif (is_array($autoloader)) {
127 }
elseif (is_string($autoloader) || is_callable($autoloader)) {
128 if ($autoloader(
$class)) {
145 if (!is_callable($callback)) {
149 $this->_defaultAutoloader = $callback;
171 $this->_autoloaders = $autoloaders;
193 $namespace = (string) $namespace;
194 if (!array_key_exists($namespace, $this->_namespaceAutoloaders)) {
197 return $this->_namespaceAutoloaders[$namespace];
208 if (is_string($namespace)) {
209 $namespace = (array) $namespace;
210 }
elseif (!is_array($namespace)) {
214 foreach ($namespace as $ns) {
215 if (!isset($this->_namespaces[$ns])) {
216 $this->_namespaces[$ns] =
true;
230 if (is_string($namespace)) {
231 $namespace = (array) $namespace;
232 }
elseif (!is_array($namespace)) {
236 foreach ($namespace as $ns) {
237 if (isset($this->_namespaces[$ns])) {
238 unset($this->_namespaces[$ns]);
251 return array_keys($this->_namespaces);
257 if (is_array($spec)) {
258 if (!isset($spec[
'path'])) {
261 $path = $spec[
'path'];
262 if (isset($spec[
'version'])) {
268 set_include_path(implode(PATH_SEPARATOR, array(
288 if (
null === $flag) {
291 $this->_suppressNotFoundWarnings = (bool) $flag;
303 $this->_fallbackAutoloader = (bool) $flag;
330 $autoloaders = array();
333 foreach (array_keys($this->_namespaceAutoloaders) as $ns) {
337 if (0 === strpos(
$class, $ns)) {
338 if ((
false === $namespace) || (strlen($ns) > strlen($namespace))) {
347 if (0 === strpos(
$class, $ns)) {
356 if (count($autoloadersNonNamespace)) {
357 foreach ($autoloadersNonNamespace as $ns) {
358 $autoloaders[] = $ns;
360 unset($autoloadersNonNamespace);
381 array_unshift($autoloaders, $callback);
384 $namespace = (array) $namespace;
385 foreach ($namespace as $ns) {
387 array_unshift($autoloaders, $callback);
404 array_push($autoloaders, $callback);
407 $namespace = (array) $namespace;
408 foreach ($namespace as $ns) {
410 array_push($autoloaders, $callback);
426 if (
null === $namespace) {
428 if (
false !== (
$index = array_search($callback, $autoloaders,
true))) {
429 unset($autoloaders[
$index]);
433 foreach ($this->_namespaceAutoloaders as $ns => $autoloaders) {
434 if (
false !== (
$index = array_search($callback, $autoloaders,
true))) {
435 unset($autoloaders[
$index]);
440 $namespace = (array) $namespace;
441 foreach ($namespace as $ns) {
443 if (
false !== (
$index = array_search($callback, $autoloaders,
true))) {
444 unset($autoloaders[
$index]);
462 spl_autoload_register(array(__CLASS__,
'autoload'));
463 $this->_internalAutoloader = array($this,
'_autoload');
496 $namespace = (string) $namespace;
497 $this->_namespaceAutoloaders[$namespace] = $autoloaders;
512 if (
$type ==
'latest') {
517 if (empty($availableVersions)) {
521 $matchedVersion = array_pop($availableVersions);
522 return $matchedVersion;
534 if (strtolower(
$version) ==
'latest') {
569 $dirs = glob(
"$path/*", GLOB_ONLYDIR);
570 foreach ((array) $dirs as $dir) {
571 $dirName = substr($dir, strlen(
$path) + 1);
572 if (!preg_match(
'/^(?:ZendFramework-)?(\d+\.\d+\.\d+((a|b|pl|pr|p|rc)\d+)?)(?:-minimal)?$/i', $dirName, $matches)) {
576 $matchedVersion = $matches[1];
579 || ((strlen($matchedVersion) >= $versionLen)
580 && (0 === strpos($matchedVersion,
$version)))
582 $versions[$matchedVersion] = $dir .
'/library';
586 uksort($versions,
'version_compare');
getRegisteredNamespaces()
unregisterNamespace($namespace)
_getVersionType($version)
getNamespaceAutoloaders($namespace)
elseif(isset( $params[ 'redirect_parent']))
unshiftAutoloader($callback, $namespace='')
setAutoloaders(array $autoloaders)
setFallbackAutoloader($flag)
pushAutoloader($callback, $namespace='')
registerNamespace($namespace)
call_user_func($callable, $param)
$_suppressNotFoundWarnings
suppressNotFoundWarnings($flag=null)
$_option $_optionId $class
getClassAutoloaders($class)
_getAvailableVersions($path, $version)
setDefaultAutoloader($callback)
removeAutoloader($callback, $namespace=null)
_getVersionPath($path, $version)
_setNamespaceAutoloaders(array $autoloaders, $namespace='')
setZfPath($spec, $version='latest')