首页 > 后端开发 > php教程 > 相关PHP回调函数的乌云

相关PHP回调函数的乌云

WBOY
发布: 2016-06-13 12:33:06
原创
879 人浏览过

有关PHP回调函数的乌云。
本人较菜,请问各位侠士,如何在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

<?php<br />
 <br />
if (!defined("__IS_ROOT")) die("Access Denied");<br />
 <br />
global $EventStack;<br />
 <br />
//闭包函数(回调)<br />
$fGetSettings = function($oSettingDaemon) {<br />
    //处理回调返回的系统设置数据模型<br />
    echo $oSettingDaemon;<br />
};<br />
 <br />
//请求数据原型<br />
$EventStack->addEvent(<br />
    "DATA_REQUEST",<br />
    serialize(array(<br />
        array(<br />
            "request" => "settingDaemon"<br />
        )<br />
    )),<br />
    $fGetSettings,<br />
    null<br />
);<br />
?>
登录后复制




/EventStack.php

<?php <br />
//事件堆栈处理组件<br>
/*数<br>
 */<br>
//已知的事件戳记<br>
/*<br>
 */<br>
 <br>
if (!defined("__IS_ROOT")) die("Access Denied");<br>
 <br>
class EventStack extends Init{<br>
    private $_aWatcherRegistry = array();//已注册的观察者列表<br>
    private $_aEventStack = array();//事件堆栈<br>
    private $_aCallbackRegistry = array();//已注册的回调函数<br>
 <br>
    function __construct() {<br>
    }<br>
    function __destruct() {<br>
        //将关键信息存储至数据源的Log表<br>
        //根据调试开关,决定是否输出调试信息至页面<br>
    }<br>
    function __toString() {<br>
    }<br>
    ##A##<br>
    public function addEvent($sStamp = "ISSUE_TRACK", $sValue, $fHandler = null, $mScope = null) {<br>
        /*sStamp: 此条消息的戳记<br>
         *sValue: 序列化的数组<br>
         * fHandler(function): 匿名回调函数<br>
         * mScope(mixed type): 回调函数的上下文环境,<br>
             * null表示传入的handler函数是一个全局函数,<br>
             * 字符串类型表示传入的handler函数是scope类的静态函数,<br>
             * 对象类型表示传入的scope是一个对象,handler函数是对象的一个方法<br>
         */<br>
        $this->_aEventStack[] = array(<br>
            "stamp" => $sStamp,<br>
            "value" => $sValue,<br>
            "handler" => $fHandler,<br>
            "scope" => $mScope,<br>
            "timestamp" => time()<br>
        );<br>
        $iKey =  sizeof($this->_aEventStack) - 1;<br>
        $this->notifyWatcher($iKey);<br>
        return $iKey;<br>
    }<br>
    public function addWatcher($oWatcher, $sWatchStamp) {<br>
    }<br>
    ##C##<br>
    public function clearEventStack() {<br>
        //清空事件堆栈<br>
    }<br>
    ##E##<br>
    public function exportEventStack() {<br>
        //输出调试信息<br>
    }<br>
    ##G##<br>
    public function getStack($iStackId) {<br>
        //根据是否提供堆栈序号,返回堆栈列表或指定堆栈的内容<br>
    }<br>
    ##N##<br>
    private function notifyWatcher($iKey) {<br>
        //推送事件至相应的观察者<br>
        if (array_key_exists($this->_aEventStack[$iKey]["stamp"], $this->_aWatcherRegistry)) {<br>
            $mCallback = $this->_aWatcherRegistry[$this->_aEventStack[$iKey]["stamp"]](<br>
                $this->_aEventStack[$iKey]["stamp"],<br>
                $this->_aEventStack[$iKey]["value"],<br>
                $this->_aEventStack[$iKey]["handler"],<br>
                $this->_aEventStack[$iKey]["scope"] <div class="clear">
                 
              
              
        
            </div>
登录后复制
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板