Advertisement
fruffl

AOP/Injectable Static

Jan 15th, 2013
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.66 KB | None | 0 0
  1.     class Foo Extends \ILLI\Core\StaticObject
  2.     {
  3.         public static function prototypeBlobb($data)
  4.         {
  5.             $data[] = __METHOD__;
  6.             return $data;
  7.         }
  8.        
  9.         public static function prototypeMethod($data)
  10.         {
  11.             $data['data'][] = __METHOD__;
  12.             return $data['data'];
  13.         }
  14.        
  15.         public static function method($data, $bla)
  16.         {
  17.             return static::prototype(__FUNCTION__, get_defined_vars());
  18.         }
  19.        
  20.         public static function blobb($data, $bla)
  21.         {
  22.             return static::prototype(__FUNCTION__, get_defined_vars());
  23.         }
  24.        
  25.         public static function facade(array $params = [], \ILLI\Core\Filter $chain)
  26.         {
  27.             $params['data'][] = 'Starting external facade';
  28.             $params = $chain->next($params, $chain);
  29.             $params[] = '--EXTERNAL METHOD FACADE';
  30.             return $params;
  31.         }
  32.     }
  33.    
  34.     foo::registerClass('baz\bar', 'blubb\bar');
  35.     foo::registerMethod('baz', function($data)
  36.     {
  37.         return $data;
  38.     });
  39.     foo::registerAdapter('method', 'blobb');
  40.     foo::registerMethodFacade('blobb', 'facade');
  41.     foo::registerMethodFacade('blobb', function(array $params = [], \ILLI\Core\Filter $chain)
  42.     {
  43.         $params['data'][] = 'Starting facade';
  44.         $params = $chain->next($params, $chain);
  45.         $params[] = '--OUTER METHOD FACADE';
  46.         return $params;
  47.     });
  48.    
  49.     foo::registerMethodFacade('blobb', function(array $params = [], \ILLI\Core\Filter $chain)
  50.     {
  51.         $params['data'][] = 'Starting inner facade';
  52.         $params = $chain->next($params, $chain);
  53.         $params[] = '--INNER METHOD FACADE';
  54.         return $params;
  55.     });
  56.    
  57.     foo::registerSignal('baz', 'PRE_EVENT', 666, function($sender, $functionName, $event, $params)
  58.     {
  59.         $params['data'][] = 'SIGNAL PRE_EVENT #1';
  60.         return $params;
  61.     });
  62.    
  63.     foo::registerSignal('blobb', 'PRE_EVENT', 777, function($sender, $functionName, $event, $params)
  64.     {
  65.         $params['data'][] = 'SIGNAL PRE_EVENT #2';
  66.         return $params;
  67.     });
  68.    
  69.     foo::registerSignal('blobb', 'FOO_EVENT', 666, function($sender, $functionName, $event, $params)
  70.     {
  71.         $params['data'][] = 'SIGNAL FOO_EVENT #1';
  72.         return $params;
  73.     });
  74.    
  75.     foo::registerSignal('blobb', 'POST_EVENT', 666, function($sender, $functionName, $event, $result, $params)
  76.     {
  77.         $result[] = 'SIGNAL POST_EVENT #1';
  78.         return $result;
  79.     });
  80.    
  81.     foo::registerSignal('blobb', 'POST_EVENT', 777, function($sender, $functionName, $event, $result, $params)
  82.     {
  83.         $result[] = 'SIGNAL POST_EVENT #2';
  84.         return $result;
  85.     });
  86.    
  87.     foo::registerFilter('blobb', 'PARAMS', function($params) { $params['data'][] = 'FILTER DATA #1'; return $params; });
  88.     foo::registerFilter('blobb', 'PARAMS', function($params) { $params['data'][] = 'FILTER DATA #2'; return $params; });
  89.    
  90.     foo::registerFilter('blobb', 'RETURN', function($result) { $result[] = 'FILTER RESULT #1'; return $result; });
  91.     foo::registerFilter('blobb', 'RETURN', function($result) { $result[] = 'FILTER RESULT #2'; return $result; });
  92.    
  93.    
  94.     $result = foo::method(['Starting test'], 'Hello World');
  95.    
  96.     var_dump(foo::baz('hello')); var_dump(compact('result'));
  97.  
  98.  
  99. /*
  100. string(5) "hello"
  101. array(1) {
  102.   ["result"]=>
  103.   array(14) {
  104.     [0]=>
  105.     string(13) "Starting test"
  106.     [1]=>
  107.     string(14) "FILTER DATA #1"
  108.     [2]=>
  109.     string(14) "FILTER DATA #2"
  110.     [3]=>
  111.     string(19) "SIGNAL PRE_EVENT #2"
  112.     [4]=>
  113.     string(24) "Starting external facade"
  114.     [5]=>
  115.     string(15) "Starting facade"
  116.     [6]=>
  117.     string(21) "Starting inner facade"
  118.     [7]=>
  119.     string(24) "root\Foo::prototypeBlobb"
  120.     [8]=>
  121.     string(21) "--INNER METHOD FACADE"
  122.     [9]=>
  123.     string(21) "--OUTER METHOD FACADE"
  124.     [10]=>
  125.     string(24) "--EXTERNAL METHOD FACADE"
  126.     [11]=>
  127.     string(16) "FILTER RESULT #1"
  128.     [12]=>
  129.     string(16) "FILTER RESULT #2"
  130.     [13]=>
  131.     string(20) "SIGNAL POST_EVENT #2"
  132.   }
  133. }
  134. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement