1: <?php
2:
3: /**
4: * Deep
5: *
6: * @package rsanchez\Deep
7: * @author Rob Sanchez <info@robsanchez.com>
8: */
9:
10: namespace rsanchez\Deep\App;
11:
12: use rsanchez\Deep\Deep;
13:
14: /**
15: * Static proxy to the IoC container
16: */
17: abstract class AbstractProxy
18: {
19: /**
20: * Run whenever __callStatic is invoked.
21: * Be sure to make idempotent when using this
22: * @return mixd
23: */
24: protected static function boot()
25: {
26: // do stuff here
27: }
28:
29: /**
30: * Name of IoC accessor
31: * @return string
32: */
33: protected static function getAccessor()
34: {
35: return '';
36: }
37:
38: /**
39: * Static method call handler
40: * @return mixed
41: */
42: public static function __callStatic($name, $args)
43: {
44: static::boot();
45:
46: return call_user_func_array(array(Deep::getInstance()->make(static::getAccessor()), $name), $args);
47: }
48: }
49: