首页 > 后端开发 > php教程 > 「」关于PHP回调函数的疑问

「」关于PHP回调函数的疑问

WBOY
发布: 2016-06-13 11:40:29
原创
867 人浏览过

「求助」关于PHP回调函数的疑问

本帖最后由 kericw 于 2013-11-01 15:37:40 编辑 本人较菜,请问各位侠士,如何在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"]<br />			);<br />			//如果指定了回调函数,依据观察者返回的数据,做出具体的操作<br />			if (isset($this->_aEventStack[$iKey]["fHandler"]) && !$mCallback) {<br />				$func = $this->_aEventStack[$iKey]["fHandler"];<br />				$func($mCallback);<br />			} else {<br />				$func(null);<br />			}<br />		}<br />	}<br />	##R##<br />	public function removeWatcher($sWatchStamp) {<br />		//移除指定的观察者<br />	}<br />}<br /><br /><br />?><br />
登录后复制
PHP?回调 回调 PHP
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板