fruffl icon

aspect in php

fruffl | 01/19/13 04:13:44 PM UTC | 0 ⭐ | 245 👁️ | Never ⏰ | []
PHP |

1.04 KB

|

None

|

0 👍

/

0 👎

    foo::registerFilter('baz', 'PARAMS', function($params) { $params['data'][] = 'FILTER DATA #1'; return $params; });
    foo::registerFilter('baz', 'RETURN', function($result) { $result[] = 'FILTER RESULT #1'; return $result; });
    foo::registerMethod('baz', function($data)
    {
        $data = 'called baz('.$data.')';
        $data = (array) $data;
        return static::aspectable('baz', get_defined_vars(), function($data, $bla = NULL)
        {
            $data[] = __METHOD__;
            return $data;
        });
    });
 
    var_dump(foo::baz('hello'));
/*
array(4) {
  [0]=>
  string(17) "called baz(hello)"
  [1]=>
  string(14) "FILTER DATA #1"
  [2]=>
  string(14) "root\{closure}"
  [3]=>
  string(16) "FILTER RESULT #1"
}
*/
    
    foo::registerMethodProto('baz', function($data, $bla = NULL)
    {
        $data[] = 'new proto: '.__METHOD__;
        return $data;
    });
 
    var_dump(foo::baz('hello'));
/*
array(4) {
  [0]=>
  string(17) "called baz(hello)"
  [1]=>
  string(14) "FILTER DATA #1"
  [2]=>
  string(25) "new proto: root\{closure}"
  [3]=>
  string(16) "FILTER RESULT #1"
}
*/

Comments