123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php namespace Laravel; use Closure;
- class IoC {
-
- public static $registry = array();
-
- public static $singletons = array();
-
- public static function register($name, Closure $resolver, $singleton = false)
- {
- static::$registry[$name] = compact('resolver', 'singleton');
- }
-
- public static function registered($name)
- {
- return array_key_exists($name, static::$registry);
- }
-
- public static function singleton($name, $resolver)
- {
- static::register($name, $resolver, true);
- }
-
- public static function instance($name, $instance)
- {
- static::$singletons[$name] = $instance;
- }
-
- public static function controller($name, $resolver)
- {
- static::register("controller: {$name}", $resolver);
- }
-
- public static function core($name, $parameters = array())
- {
- return static::resolve("laravel.{$name}", $parameters);
- }
-
- public static function resolve($name, $parameters = array())
- {
- if (array_key_exists($name, static::$singletons))
- {
- return static::$singletons[$name];
- }
- if ( ! static::registered($name))
- {
- throw new \Exception("Error resolving [$name]. No resolver has been registered.");
- }
- $object = call_user_func(static::$registry[$name]['resolver'], $parameters);
-
-
-
-
-
-
-
- if (isset(static::$registry[$name]['singleton']))
- {
- return static::$singletons[$name] = $object;
- }
- return $object;
- }
- }
|