autoload bundles based on namespace.
This commit is contained in:
parent
106b5dc1e1
commit
b262e743c0
|
@ -67,6 +67,21 @@ class_alias(static::$aliases[$class], $class);
|
||||||
return static::load_psr($class, $info['directory']);
|
return static::load_psr($class, $info['directory']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the class is namespaced and a bundle exists that is assigned
|
||||||
|
// a name matching that namespace, we'll start the bundle and let
|
||||||
|
// the class fall through the method again.
|
||||||
|
if ( ! is_null($namespace = root_namespace($class)))
|
||||||
|
{
|
||||||
|
$namespace = strtolower($namespace);
|
||||||
|
|
||||||
|
if (Bundle::exists($namespace) and ! Bundle::started($namespace))
|
||||||
|
{
|
||||||
|
Bundle::start($namespace);
|
||||||
|
|
||||||
|
return static::load($class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If the class is not maped and is not part of a bundle or a mapped
|
// If the class is not maped and is not part of a bundle or a mapped
|
||||||
// namespace, we'll make a last ditch effort to load the class via
|
// namespace, we'll make a last ditch effort to load the class via
|
||||||
// the PSR-0 from one of the registered directories.
|
// the PSR-0 from one of the registered directories.
|
||||||
|
|
|
@ -361,6 +361,20 @@ function str_finish($value, $cap)
|
||||||
return rtrim($value, $cap).$cap;
|
return rtrim($value, $cap).$cap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the root namespace of a given class.
|
||||||
|
*
|
||||||
|
* @param string $class
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function root_namespace($class)
|
||||||
|
{
|
||||||
|
if (str_contains($class, '\\'))
|
||||||
|
{
|
||||||
|
return head(explode('\\', $class));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the value of the given item.
|
* Return the value of the given item.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue