Browse Source

autoload bundles based on namespace.

Taylor Otwell 13 years ago
parent
commit
b262e743c0
2 changed files with 29 additions and 0 deletions
  1. 15 0
      laravel/autoloader.php
  2. 14 0
      laravel/helpers.php

+ 15 - 0
laravel/autoloader.php

@@ -67,6 +67,21 @@ class Autoloader {
 			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
 		// namespace, we'll make a last ditch effort to load the class via
 		// the PSR-0 from one of the registered directories.

+ 14 - 0
laravel/helpers.php

@@ -361,6 +361,20 @@ function str_finish($value, $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.
  *