Advertisement
fruffl

dyn object mapper

Nov 3rd, 2012
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.90 KB | None | 0 0
  1.     $test = new \ILLI\Core\Data\Object; // empty object (no methods, no fields)
  2.    
  3.     $test   ->defineMethod('hello', function($name){ var_dump('-- hello: '.$name); return 'hello'; })
  4.         ->defineMethod('world', function($name){ var_dump('-- world: '.$name); return 'world'; })
  5.         ->defineMethod('foooo', function($name){ var_dump('-- foooo: '.$name); return 'foooo'; })
  6.         ->defineMethod('baaar', function($name){ var_dump('-- baaar: '.$name); return 'baaar'; })
  7.    
  8.         ->defineSignal('hello', \ILLI\Core\Pattern\iSignal::POST_CALL, 'world')
  9.         ->defineSignal('hello', \ILLI\Core\Pattern\iSignal::POST_CALL, 'foooo')
  10.         ->defineSignal('hello', \ILLI\Core\Pattern\iSignal::POST_CALL, 'baaar')
  11.    
  12.         ->defineField('myProp', ['string'], [
  13.             //\ILLI\Core\iField::PROP_FLAG => \ILLI\Core\iField::FLAG_IS_PRIVATE_SET | \ILLI\Core\iField::FLAG_IS_LOCKED,
  14.             \ILLI\Core\iField::PROP_INIT => 'foobar',
  15.             \ILLI\Core\iField::PROP_ON_SET => function($data) use ($test)
  16.             {
  17.                 $test->hello($data[\ILLI\Core\iField::CALLBACK_PROP_NEW]);
  18.                 return $data;
  19.             }]);
  20.        
  21.     $test   ->myProp = 'foobaz';
  22.                
  23.  
  24. /**
  25. string(16) "-- hello: foobaz"
  26. string(16) "-- world: foobaz"
  27. string(16) "-- foooo: foobaz"
  28. string(16) "-- baaar: foobaz"
  29. object(ILLI\Core\Data\Object)#19 (6) {
  30.   ["__tField_MemberProperties":"ILLI\Core\aObject":private]=>
  31.   array(1) {
  32.     ["myProp"]=>
  33.     array(14) {
  34.       ["init"]=>
  35.       string(6) "foobar"
  36.       ["contains"]=>
  37.       string(6) "foobaz"
  38.       ...
  39.       */
  40.  
  41.  
  42.        
  43.         public function ILLI\Core\aObject::__call($__name, array $__args = [])
  44.         {
  45.             $name = strtolower($__name);
  46.            
  47.             if(FALSE === $this->tMethod_isDefined($name))
  48.                 return $this->tObject_template__call($__name, $__args);
  49.            
  50.             $this->tSignal_send($name, iSignal::PRE_CALL, $__args);
  51.             $result = $this->tMethod_template__call($__name, $__args);
  52.             $this->tSignal_send($name, iSignal::POST_CALL, $__args);
  53.                
  54.             return $result;
  55.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement