Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Inventory Extends \ILLI\Core\Object { public function update(Order $order){ return 'Inventory updated: '.$order->productlist(); } }
- class Service Extends \ILLI\Core\Object { public function sendmail(Order $order) { return 'receipt has been sent: '.$order->productlist(); } }
- class Dropshipper Extends \ILLI\Core\Object { public function notify(Order $order) { return 'dropshipper notify: '.$order->productlist(); } }
- class Order { public function productlist() { return 'List of ordered products'; } }
- class AspectVariable Extends \ILLI\Core\Object
- {
- // register aspectable property
- protected static $__autoConfig = ['order'];
- protected $order = NULL;
- public function result()
- {
- $results = $this->__Core_Object_T_Signal_results;
- $order = $this->order;
- $method = __METHOD__;
- var_dump(compact('method', 'results', 'order'));
- }
- }
- $manager = new AspectVariable;
- $manager->registerSignal('aspectableSetOrder', AspectVariable::T_SIGNAL_EMIT_EVENT_INIT, 500, [new inventory, 'update'] );
- $manager->registerSignal('aspectableSetOrder', AspectVariable::T_SIGNAL_EMIT_EVENT_INIT, 600, [new Service, 'sendmail'] );
- $manager->registerSignal('aspectableSetOrder', AspectVariable::T_SIGNAL_EMIT_EVENT_INIT, 700, [new dropshipper, 'notify'] );
- $manager->order = new Order;
- $manager->result();
- /*
- array(3) {
- ["method"]=>
- string(27) "root\AspectVariable::result"
- ["results"]=>
- array(1) {
- ["aspectableSetOrder"]=>
- array(1) {
- ["ILLI\Core\Object\I_Signal::T_SIGNAL_EMIT_EVENT_INIT"]=>
- array(3) {
- [500]=>
- string(43) "Inventory updated: List of ordered products"
- [600]=>
- string(47) "receipt has been sent: List of ordered products"
- [700]=>
- string(44) "dropshipper notify: List of ordered products"
- }
- }
- }
- ["order"]=>
- object(root\Order)#11 (0) {
- }
- }
- */
- class AspectMethod Extends \ILLI\Core\Object
- {
- public function setOrder(Order $order)
- {
- var_dump(__METHOD__);
- return $this->methodAspect
- (
- __FUNCTION__,
- func_get_args(),
- function($order) // proto setOrder
- {
- var_dump($this->__Core_Object_T_Signal_results);
- }
- );
- }
- }
- $manager = new AspectMethod;
- $manager->registerSignal('setOrder', AspectMethod::T_SIGNAL_EMIT_EVENT_INIT, 500, [new inventory, 'update'] );
- $manager->registerSignal('setOrder', AspectMethod::T_SIGNAL_EMIT_EVENT_INIT, 600, [new Service, 'sendmail'] );
- $manager->registerSignal('setOrder', AspectMethod::T_SIGNAL_EMIT_EVENT_INIT, 700, [new dropshipper, 'notify'] );
- $manager->setOrder(new Order);
- /*
- string(27) "root\AspectMethod::setOrder"
- array(1) {
- ["setOrder"]=>
- array(1) {
- ["ILLI\Core\Object\I_Signal::T_SIGNAL_EMIT_EVENT_INIT"]=>
- array(3) {
- [500]=>
- string(43) "Inventory updated: List of ordered products"
- [600]=>
- string(47) "receipt has been sent: List of ordered products"
- [700]=>
- string(44) "dropshipper notify: List of ordered products"
- }
- }
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement