本人较菜,请问各位侠士,如何在php中达到eventstack的notifywatcher方法可以将取得的数据返还给welcome.php指定的回调函数,我哪里写的不对啊 ???
出现的错误为:fatal error: function name must be a string in /home/latel/workspace/new_zhebo/module/eventstack.php on line ××
/app/welcome.php
addevent( data_request, serialize(array( array( request => settingdaemon ) )), $fgetsettings, null);?>
/eventstack.php
_aeventstack[] = array( stamp => $sstamp, value => $svalue, handler => $fhandler, scope => $mscope, timestamp => time() ); $ikey = sizeof($this->_aeventstack) - 1; $this->notifywatcher($ikey); return $ikey; } public function addwatcher($owatcher, $swatchstamp) { } ##c## public function cleareventstack() { //清空事件堆栈 } ##e## public function exporteventstack() { //输出调试信息 } ##g## public function getstack($istackid) { //根据是否提供堆栈序号,返回堆栈列表或指定堆栈的内容 } ##n## private function notifywatcher($ikey) { //推送事件至相应的观察者 if (array_key_exists($this->_aeventstack[$ikey][stamp], $this->_awatcherregistry)) { $mcallback = $this->_awatcherregistry[$this->_aeventstack[$ikey][stamp]]( $this->_aeventstack[$ikey][stamp], $this->_aeventstack[$ikey][value], $this->_aeventstack[$ikey][handler], $this->_aeventstack[$ikey][scope] ); //如果指定了回调函数,依据观察者返回的数据,做出具体的操作 if (isset($this->_aeventstack[$ikey][fhandler]) && !$mcallback) { $func = $this->_aeventstack[$ikey][fhandler]; $func($mcallback); } else { $func(null); } } } ##r## public function removewatcher($swatchstamp) { //移除指定的观察者 }} ?>
回复讨论(解决方案) 还是那样,连错误信息都不给全! $fgetsettings = function($osettingdaemon) { //处理回调返回的系统设置数据模型 echo $osettingdaemon;};$eventstack = new eventstack;//请求数据原型$eventstack->addevent( data_request, serialize(array( array( request => settingdaemon ) )), $fgetsettings, null);class eventstack { private $_awatcherregistry = array();//已注册的观察者列表 private $_aeventstack = array();//事件堆栈 private $_acallbackregistry = array();//已注册的回调函数 function __construct() { } function __destruct() { //将关键信息存储至数据源的log表 //根据调试开关,决定是否输出调试信息至页面 } function __tostring() { } ##a## public function addevent($sstamp = issue_track, $svalue, $fhandler = null, $mscope = null) {print_r(func_get_args());//传入正确 /*sstamp: 此条消息的戳记 *svalue: 序列化的数组 * fhandler(function): 匿名回调函数 * mscope(mixed type): 回调函数的上下文环境, * null表示传入的handler函数是一个全局函数, * 字符串类型表示传入的handler函数是scope类的静态函数, * 对象类型表示传入的scope是一个对象,handler函数是对象的一个方法 */ $this->_aeventstack[] = array( stamp => $sstamp, value => $svalue, handler => $fhandler, scope => $mscope, timestamp => time() );print_r($this->_aeventstack);//赋值正确 $ikey = sizeof($this->_aeventstack) - 1; $this->notifywatcher($ikey); return $ikey; } public function addwatcher($owatcher, $swatchstamp) { } ##c## public function cleareventstack() { //清空事件堆栈 } ##e## public function exporteventstack() { //输出调试信息 } ##g## public function getstack($istackid) { //根据是否提供堆栈序号,返回堆栈列表或指定堆栈的内容 } ##n## private function notifywatcher($ikey) { //推送事件至相应的观察者 if (array_key_exists($this->_aeventstack[$ikey][stamp], $this->_awatcherregistry)) { $mcallback = $this->_awatcherregistry[$this->_aeventstack[$ikey][stamp]]( $this->_aeventstack[$ikey][stamp], $this->_aeventstack[$ikey][value], $this->_aeventstack[$ikey][handler], $this->_aeventstack[$ikey][scope] ); //如果指定了回调函数,依据观察者返回的数据,做出具体的操作 if (isset($this->_aeventstack[$ikey][fhandler]) && !$mcallback) { $func = $this->_aeventstack[$ikey][fhandler]; $func($mcallback); } else { $func(null); } } } ##r## public function removewatcher($swatchstamp) { //移除指定的观察者 }}
array( [0] => data_request [1] => a:1:{i:0;a:1:{s:7:request;s:13:settingdaemon;}} [2] => closure object ( [parameter] => array ( [$osettingdaemon] => ) ) [3] => )array( [0] => array ( [stamp] => data_request [value] => a:1:{i:0;a:1:{s:7:request;s:13:settingdaemon;}} [handler] => closure object ( [parameter] => array ( [$osettingdaemon] => ) ) [scope] => [timestamp] => 1383634959 ))
还是那样,连错误信息都不给全! $fgetsettings = function($osettingdaemon) { //处理回调返回的系统设置数据模型 echo $osettingdaemon;};$eventstack = new eventstack;//请求数据原型$eventstack->addevent( data_request, serialize(array( array( request => settingdaemon ) )), $fgetsettings, null);class eventstack { private $_awatcherregistry = array();//已注册的观察者列表 private $_aeventstack = array();//事件堆栈 private $_acallbackregistry = array();//已注册的回调函数 function __construct() { } function __destruct() { //将关键信息存储至数据源的log表 //根据调试开关,决定是否输出调试信息至页面 } function __tostring() { } ##a## public function addevent($sstamp = issue_track, $svalue, $fhandler = null, $mscope = null) {print_r(func_get_args());//传入正确 /*sstamp: 此条消息的戳记 *svalue: 序列化的数组 * fhandler(function): 匿名回调函数 * mscope(mixed type): 回调函数的上下文环境, * null表示传入的handler函数是一个全局函数, * 字符串类型表示传入的handler函数是scope类的静态函数, * 对象类型表示传入的scope是一个对象,handler函数是对象的一个方法 */ $this->_aeventstack[] = array( stamp => $sstamp, value => $svalue, handler => $fhandler, scope => $mscope, timestamp => time() );print_r($this->_aeventstack);//赋值正确 $ikey = sizeof($this->_aeventstack) - 1; $this->notifywatcher($ikey); return $ikey; } public function addwatcher($owatcher, $swatchstamp) { } ##c## public function cleareventstack() { //清空事件堆栈 } ##e## public function exporteventstack() { //输出调试信息 } ##g## public function getstack($istackid) { //根据是否提供堆栈序号,返回堆栈列表或指定堆栈的内容 } ##n## private function notifywatcher($ikey) { //推送事件至相应的观察者 if (array_key_exists($this->_aeventstack[$ikey][stamp], $this->_awatcherregistry)) { $mcallback = $this->_awatcherregistry[$this->_aeventstack[$ikey][stamp]]( $this->_aeventstack[$ikey][stamp], $this->_aeventstack[$ikey][value], $this->_aeventstack[$ikey][handler], $this->_aeventstack[$ikey][scope] ); //如果指定了回调函数,依据观察者返回的数据,做出具体的操作 if (isset($this->_aeventstack[$ikey][fhandler]) && !$mcallback) { $func = $this->_aeventstack[$ikey][fhandler]; $func($mcallback); } else { $func(null); } } } ##r## public function removewatcher($swatchstamp) { //移除指定的观察者 }}
array( [0] => data_request [1] => a:1:{i:0;a:1:{s:7:request;s:13:settingdaemon;}} [2] => closure object ( [parameter] => array ( [$osettingdaemon] => ) ) [3] => )array( [0] => array ( [stamp] => data_request [value] => a:1:{i:0;a:1:{s:7:request;s:13:settingdaemon;}} [handler] => closure object ( [parameter] => array ( [$osettingdaemon] => ) ) [scope] => [timestamp] => 1383634959 ))
板大。您好,我把所有代码都贴出来,您就帮我解决下吧。
文件:app/welcome.php
addevent(//添加数据请求至事件堆栈 data_request, serialize(array( array( request => settingdaemon ) )), $fgetsettings, null);$eventstack->addevent(//添加数据请求至事件堆栈 data_request, serialize(array( array( request => archivelist, index => case, sort => date desc, limit => 0, 8 ), array( request => archivelist, index => case, sort => successful_flag desc, limit => 0, 8 ), array( request => archivelist, index => detection, sort => hot_flag desc, limit => 0, 5 ), array( request => archivelist, index => news, sort => date desc, limit => 0, 2 ), array( request => archivelist, index => news_industrial, sort => hot_flag desc, limit => 0, 1 ), array( request => userlist, level => worker ), array( request => archivelist, index => news, sort => count_clicks desc, limit => 0, 3 ) )), $fdatamap,//指定回调函数 null//指明上下文环境);//为模版绑定数据//输出页面$smarty->display(kit-full.tpl);?>
文件: eventstack.php
addevent( notice, serialize(array(module(core) and module(pdo) is initiated)) ); $this->addevent( notice, serialize(array(module(eventstack) is initiated)) ); } function __destruct() { //将关键信息存储至数据源的log表 //根据调试开关,决定是否输出调试信息至页面 $bdebuglock = parent::getargument(lockring, debug); if ($bdebuglock) { $this->exporteventstack(); } } function __tostring() { } ##a## public function addevent($sstamp = issue_track, $svalue, $fhandler = null, $mscope = null) { /*sstamp: 此条消息的戳记 *svalue: 序列化的数组 * fhandler(function): 匿名回调函数 * mscope(mixed type): 回调函数的上下文环境, * null表示传入的handler函数是一个全局函数, * 字符串类型表示传入的handler函数是scope类的静态函数, * 对象类型表示传入的scope是一个对象,handler函数是对象的一个方法 */ $this->_aeventstack[] = array( stamp => $sstamp, value => $svalue, handler => $fhandler, scope => $mscope, timestamp => time() ); $ikey = sizeof($this->_aeventstack) - 1; $this->toast($ikey); return $ikey; } public function addwatcher($owatcher, $swatchstamp) { //添加观察者 if(is_object($owatcher)) { $this->_awatcherregistry[$swatchstamp] = $owatcher; $this->addevent( notice, serialize(array(watcher($swatchstamp) is added on eventstack)) ); } } ##c## public function cleareventstack() { //清空事件堆栈 unset($this->_aeventstack); $this->addevent( notice, serialize(array(eventstack is cleared)) ); } ##e## public function exporteventstack() { //输出调试信息 echo debug; echo _________________________________________________>
; foreach ($this->_aeventstack as $key => $value) { //if (in_array($value[stamp], array(notice, warning, error, issue_track))) { echo stackid: $key stamp .$value[stamp]. backtrace .$value[value]. timestamp .date(h:m:s,$value[timestamp]).
; //} } } ##g## public function getstack($istackid) { //根据是否提供堆栈序号,返回堆栈列表或指定堆栈的内容 if ($istackid) { if(!isset($_aeventstack[$istackid])) { $this->addevent( issue_track, serialize(array( slevel => notice, slocate => , smessage => requested stack id($istackid) doesn't existed in eventstack, islog => true, bdirectoutput => false )) ); return null; } else { return $_aeventstack[$istackid]; } } else { return $this->_aeventstack; } } ##l## public function loopevent() { //遍历事件堆栈 //在所有其他组件运行完成时执行 #如果发现需要回调的或被观察者绑定的事件,则作出具体动作 foreach ($this->_aeventstack as $aevent) { //推送相应事件至绑定此类型事件的观察者 if (array_key_exists($aevent[stamp], $this->_awatcherregistry)) { $mcallback = $this->_awatcherregistry[$aevent[stamp]] ( $aevent[stamp], $aevent[value] ); } //检查回调函数 $ffunc = $aevent[fhandler]; if (isset($mcallback) && is_callable($ffunc)) { $ffunc($mcallback); } else { } } } ##n## private function toast($ikey) { //推送事件至相应的观察者 if (array_key_exists($this->_aeventstack[$ikey][stamp], $this->_awatcherregistry)) { $mcallback = $this->_awatcherregistry[$this->_aeventstack[$ikey][stamp]]( $this->_aeventstack[$ikey][stamp], $this->_aeventstack[$ikey][value] ); //如果指定了回调函数,依据观察者返回的数据,做出具体的操作 if (isset($this->_aeventstack[$ikey][fhandler]) && !$mcallback) { echo $func = $this->_aeventstack[$ikey][fhandler]; echo 1; $func($mcallback); } else { echo 2; $func(null); } } } ##r## public function removewatcher($swatchstamp) { //移除指定的观察者 unset($this->_awatcherregistry[$swatchstamp]); if (empty($this->_awatcherregistry[$swatchstamp])) { $this->addevent( notice, serialize(array(watcher($swatchstamp) is removed)) ); return true; } else { return false; } }}?>
出错信息:
fatal error: function name must be a string in c:\wamp\www\newzhebo\module\eventstack.php on line 157
call stack
# time memory function location
1 0.0000 146864 {main}( ) ..\index.php:0
2 0.0540 1074504 init->start( ) ..\index.php:57
3 0.0540 1074520 app->__invoke( ) ..\init.php:152
4 0.0550 1083208 require_once( 'c:\wamp\www\newzhebo\module\app\welcome.php' ) ..\app.php:30
5 0.0550 1084664 eventstack->addevent( ) ..\welcome.php:34
6 0.0550 1085176 eventstack->toast( ) ..\eventstack.php:65
文件:model.php
$this->asettingdaemon ); print_r($aobjectarray); } function onmodel($smodel, $aargpack) { if ($smodel != settingdaemon) return false; global $core, $eventstack, $pdo; try { $adatabasesoftlink = $core->getargument(db, softlink); $stable = $adatabasesoftlink[system]; $ssql = select * from $stable; $aresult = $pdo->query($ssql); $ssettingdaemon = $aresult->fetchcolumn(); $this->asettingdaemon = unserialize($ssettingdaemon); //返回数据模型 return $this; } catch(pdoexception $e) { $eventstack->addevent( issue_track, serialize(array( slevel => error, slocate => model->on->settingdaemon, smessage => requested model(settingdaemon) failed, possibly reason:.$e->getmessage(), islog => true, bdirectoutput => false )) ); return false; } } function onmodify($smodel, $asqlpack) { if ($smodel != settingdaemon) return false; global $eventstack, $pdo; try { $adatabasesoftlink = $core->getargument(db, softlink); $stable = $adatabasesoftlink[system]; foreach ($asqlpack as $ssql) { $pdo->query($ssql); } } catch(pdoexception $e) { $eventstack->addevent( issue_track, serialize(array( slevel => error, slocate => model->modify->settingdaemon, smessage => , islog => true, bdirectoutput => false )) ); } }}class staticwords{ //[静态文本]数据模型 #variables public $swelcomeintro; public $saboutzhebo; public $saboutculture; public $saboutlaboratory; public $saboutteam; public $sabouthornor; public $sfootintro; #functions function __tostring() { } function onmodel($smodel, $aargpack) { if ($smodel != staticwords) return false; global $core, $eventstack, $pdo; try { $adatabasesoftlink = $core->getargument(db, softlink); $stable = $adatabasesoftlink[system]; $ssql = select * from $stable; $aresult = $pdo->query($ssql); $aresultline = $aresult->fetch(); $this->swelcomeintro = $aresultline(introduction_short); $this->saboutzhebo = $aresultline(introduction_all); $this->saboutculture = $aresultline(introduction_culture); $this->saboutlaboratory = $aresultline(introduction_lab); $this->saboutteam = $aresultline(introduction_team); $this->sabouthornor = $aresultline(introduction_hornor); $this->sfootintro = $aresultline(introduction_foot); //返回数据模型 return $this; } catch(pdoexception $e) { $eventstack->addevent( issue_track, serialize(array( slevel => error, slocate => model->on->settingdaemon, smessage => requested model(settingdaemon) failed, possibly reason:.$e->getmessage(), islog => true, bdirectoutput => false )) ); return false; } } function onmodify($smodel, $asqlpack) { if ($smodel != staticwords) return false; global $eventstack, $pdo; try { //取得所需表名 $adatabasesoftlink = $core->getargument(db, softlink); $stable = $adatabasesoftlink[system]; //验证参数 //生成sql查询语句 //更新数据 //返回对象 return $this; } catch(pdoexception $e) { $eventstack->addevent( issue_track, serialize(array( slevel => error, slocate => model->modify->settingdaemon, smessage => , islog => true, bdirectoutput => false )) ); } }}class archivecontent implements imodeldo{ //[文章内容]数据模型 #variables public $iid; public $sindex; public $iauthor; public $sauthorname; public $stimestamp; public $stitle; public $scontent; public $bhotflag; public $icountclicks; #functions function __tostring() { } function onmodel($smodel, $aargpack) { if ($smodel != archivecontent) return false; global $core, $eventstack; extract($aargpack); try { //获得所需的数据表名 $adatabasesoftlink = $core->getargument(db, softlink); $stable = $adatabasesoftlink[archive]; //核实参数 $ssqlid = isset($iid)? where `id`=$iid: where `id`=1; //生成查询sql $ssql = select * from $stable.$ssqlid; //取得数据 $aresult = $pdo->query($ssql); while ($arow = $aresult->fetch()) { $this->aarchivelist[] = array( id => $arow[id], index => $arow[index], date => $arow[date], author => $arow[author], title => $arow[title], content => $arow[content], hot_flag => $arow[hot_flag], successful_flag => $arow[successful_flag], count_clicks => $arow[count_clicks] ); } //返回数据模型 return $this; } catch(pdoexception $e) { $eventstack->addevent( error, serialize(array( slevel => error, slocate => model->on->archivecontent, smessage => requested model(archivecontent) failed, possibly reason:.$e->getmessage(), islog => true, bdirectoutput => false )) ); } } function onmodify($smodel, $asqlpack) { if ($smodel != archivecontent) return false; }}class model extends init{ #variables private $_amodelmap = array();//戳记和类名的实际对应 private $_amodels = array();//已注册的数据模型模块 #functions function __construct() { $this->registry(); //添加所有的数据模块至数据模块列表 $this->registermodel(settingdaemon); $this->registermodel(staticwords); $this->registermodel(archivecontent); $this->registermodel(archivelist); $this->registermodel(userdetail); $this->registermodel(userlist); $this->registermodel(friendlinklist); $this->registermodel(chattingline); $this->registermodel(searchresult); } function __invoke($sstamp, $svalue) { //收到事件堆栈推送的消息 if ($sstamp != data_request) { //复查消息戳记 die(module(model) recived wrong toast from eventstack); } else { $avalue = unserialize($svalue); //核查参数 if (!is_array($avalue)) { //数据请求者传递?本组件的参数不合法 } else { foreach ($avalue as $aargpack) { //获得数据模型名 $smodelname = strtolower($aargpack[request]); //提取传递给数据模型的参数列表 array_shift($aargpack); //生成需要的数据模型对象 $omodel = $this->creatmodel($smodelname); //添加次数据模型对象至保存的列表 $this->_amodels[] = $omodel; //继续该数据模型填充数据,并保存至要返回的数据模型列表中 $omodel->onmodel($smodelname, $aargpack); } //将所有数据模型对象作为参数返回至事件堆栈, 事件堆栈会视回调函数返回至数据请求方,注意是一个数组 return $this->_amodels; } } } ##r## function registry() { //注册此组件为事件堆栈组件的观察者 global $eventstack; $eventstack->addwatcher($this, data_request); $eventstack->addwatcher($this, data_modify); } private function registermodel($smodelname) { //注册戳记和类名的对应关系 $this->_amodelmap[strtolower($smodelname)] = $smodelname; } private function creatmodel($smodelname) { //以工厂模式生成数据模型 if (in_array($smodelname, array_keys($this->_amodelmap))) { $sclassname = $this->_amodelmap[$smodelname]; return new $sclassname(); } else { return null; } }}?>
文件:app.php
getcontroller(); if (in_array($sapp, $aappavailablelist)) { $this->_sapp = $sapp; $sfilepath = module/app/.$sapp..php; if (is_file($sfilepath) && is_readable($sfilepath)) { require_once($sfilepath); } } }}?>
你给全错误信息不经行了吗?
fatal error: function name must be a string in c:\wamp\www\newzhebo\module\ eventstack.php on line 157
不就是 eventstack.php 的 157 行出错吗?
eventstack.php
143 private function toast($ikey) {144 //推送事件至相应的观察者145 if (array_key_exists($this->_aeventstack[$ikey][stamp], $this->_awatcherregistry)) {146 $mcallback = $this->_awatcherregistry[$this->_aeventstack[$ikey][stamp]](147 $this->_aeventstack[$ikey][stamp],148 $this->_aeventstack[$ikey][value]149 );150 //如果指定了回调函数,依据观察者返回的数据,做出具体的操作151 if (isset($this->_aeventstack[$ikey][fhandler]) && !$mcallback) {152 echo $func = $this->_aeventstack[$ikey][fhandler];153 echo 1;154 $func($mcallback);155 } else {156 echo 2;157 $func(null); //这个 $func 在哪里赋值的? } } }
154 的是在 152 赋值的,哪 157 的 $func 在哪里赋值的?
至少要把 $func = $this->_aeventstack[$ikey][fhandler]; 放到条件分支外面吧?
你给全错误信息不经行了吗?
fatal error: function name must be a string in c:\wamp\www\newzhebo\module\ eventstack.php on line 157
不就是 eventstack.php 的 157 行出错吗?
eventstack.php
143 private function toast($ikey) {144 //推送事件至相应的观察者145 if (array_key_exists($this->_aeventstack[$ikey][stamp], $this->_awatcherregistry)) {146 $mcallback = $this->_awatcherregistry[$this->_aeventstack[$ikey][stamp]](147 $this->_aeventstack[$ikey][stamp],148 $this->_aeventstack[$ikey][value]149 );150 //如果指定了回调函数,依据观察者返回的数据,做出具体的操作151 if (isset($this->_aeventstack[$ikey][fhandler]) && !$mcallback) {152 echo $func = $this->_aeventstack[$ikey][fhandler];153 echo 1;154 $func($mcallback);155 } else {156 echo 2;157 $func(null); //这个 $func 在哪里赋值的? } } }
154 的是在 152 赋值的,哪 157 的 $func 在哪里赋值的?
至少要把 $func = $this->_aeventstack[$ikey][fhandler]; 放到条件分支外面吧?
我把代码改成这样,还是上面的错误。
private function toast($ikey) { //推送事件至相应的观察者 if (array_key_exists($this->_aeventstack[$ikey][stamp], $this->_awatcherregistry)) { $mcallback = $this->_awatcherregistry[$this->_aeventstack[$ikey][stamp]]( $this->_aeventstack[$ikey][stamp], $this->_aeventstack[$ikey][value] ); //如果指定了回调函数,依据观察者返回的数据,做出具体的操作 $func = $this->_aeventstack[$ikey][fhandler]; if (isset($this->_aeventstack[$ikey][fhandler]) && !$mcallback) { echo 1; $func($mcallback); } else { echo 2; $func(null); } } }
var_dump eventstack对象实例的结果如下
object(eventstack)[5]
private '_awatcherregistry' =>
array (size=3)
'issue_track' =>
object(issue)[6]
private '_alastissue' =>
array (size=0)
...
'data_request' =>
object(model)[8]
private '_amodelmap' =>
array (size=9)
...
private '_amodels' =>
array (size=8)
...
protected 'ainitarguments' =>
array (size=6)
...
protected 'amodules' =>
array (size=0)
...
private '_amodulelist' (init) =>
array (size=11)
...
'data_modify' =>
object(model)[8]
private '_amodelmap' =>
array (size=9)
...
private '_amodels' =>
array (size=8)
...
protected 'ainitarguments' =>
array (size=6)
...
protected 'amodules' =>
array (size=0)
...
private '_amodulelist' (init) =>
array (size=11)
...
private '_aeventstack' =>
array (size=17)
0 =>
array (size=5)
'stamp' => string 'notice' (length=6)
'value' => string 'a:1:{i:0;s:41:module(core) and module(pdo) is initiated;}' (length=59)
'handler' => null
'scope' => null
'timestamp' => int 1383656323
1 =>
array (size=5)
'stamp' => string 'notice' (length=6)
'value' => string 'a:1:{i:0;s:31:module(eventstack) is initiated;}' (length=49)
'handler' => null
'scope' => null
'timestamp' => int 1383656323
2 =>
array (size=5)
'stamp' => string 'notice' (length=6)
'value' => string 'a:1:{i:0;s:43:watcher(issue_track) is added on eventstack;}' (length=61)
'handler' => null
'scope' => null
'timestamp' => int 1383656323
3 =>
array (size=5)
'stamp' => string 'notice' (length=6)
'value' => string 'a:1:{i:0;s:26:module(issue) is initiated;}' (length=44)
'handler' => null
'scope' => null
'timestamp' => int 1383656323
4 =>
array (size=5)
'stamp' => string 'notice' (length=6)
'value' => string 'a:1:{i:0;s:29:module(hashutls) is initiated;}' (length=47)
'handler' => null
'scope' => null
'timestamp' => int 1383656323
5 =>
array (size=5)
'stamp' => string 'notice' (length=6)
'value' => string 'a:1:{i:0;s:44:watcher(data_request) is added on eventstack;}' (length=62)
'handler' => null
'scope' => null
'timestamp' => int 1383656323
6 =>
array (size=5)