Daan is sweet to Kelley and delegates himself TestCMS code reflection
[ssproject1617.git] / testcms-final-anon / system / classes / ioc.php
1 <?php defined('IN_CMS') or die('No direct access allowed.');
2
3 class IoC {
4
5 private static $registry = array();
6 private static $instances = array();
7
8 public static function register($name, $resolver, $singleton = false) {
9 static::$registry[$name] = array('resolver' => $resolver, 'singleton' => $singleton);
10 }
11
12 public static function instance($name, $instance) {
13 static::$instances[$name] = $instance;
14 }
15
16 public static function resolve($name) {
17 if(isset(static::$instances[$name])) {
18 return static::$instances[$name];
19 }
20
21 if(isset(static::$registry[$name])) {
22 $object = call_user_func(static::$registry[$name]['resolver']);
23
24 if(isset(static::$registry[$name]['singleton']) and static::$registry[$name]['singleton']) {
25 static::$instances[$name] = $object;
26 }
27
28 return $object;
29 }
30
31 return false;
32 }
33 }