Home >Backend Development >PHP Tutorial > 相关PHP回调函数的乌云

相关PHP回调函数的乌云

WBOY
WBOYOriginal
2016-06-13 12:33:06874browse

有关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>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn