PHP コールバック関数に関する暗雲。
初心者なので皆さんにお聞きしたいのですが、PHPのEventStackのNotifyWatcherメソッドを使って、welcome.phpで指定したコールバック関数に取得したデータを返すにはどうすればよいでしょうか?どこの書き方が間違っていたのでしょうか? ? ?
発生するエラーは次のとおりです: 致命的エラー: 関数名は /home/latel/Workspace/new_zhebo/module/EventStack.php の ××
行にある文字列である必要があります
/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 /> ?>
<?php<br /> //イベントスタック処理コンポーネント<br /> /*数値<br /> */<br /> //既知のイベントスタンプ<br /> /*<br /> */<br /> <br /> if (!define("__IS_ROOT")) die("アクセスが拒否されました");<br /> <br /> クラス EventStack は Init{<br /> を拡張します Private $_aWatcherRegistry = array();//登録されたオブザーバーのリスト<br /> Private $_aEventStack = array();//イベント スタック<br /> Private $_aCallbackRegistry = array();//登録されたコールバック関数<br /> <br /> 関数 __construct() {<br /> }<br /> 関数 __destruct() {<br /> // 主要な情報をデータ ソースのログ テーブルに保存します <br /> //デバッグスイッチに応じてデバッグ情報をページに出力するかどうかを決定します<br /> }<br /> 関数 __toString() {<br /> }<br /> ##A##<br /> パブリック関数 addEvent($sStamp = "ISSUE_TRACK", $sValue, $fHandler = null, $mScope = null) {<br /> /*sStamp: このメッセージのスタンプ<br /> *sValue: シリアル化された配列<br /> * fHandler(関数): 匿名コールバック関数<br /> * mScope(混合型): コールバック関数のコンテキスト <br /> * null は、渡されたハンドラー関数がグローバル関数 <br /> であることを意味します * 文字列型は、渡されたハンドラー関数がスコープ クラス <br /> の静的関数であることを示します。 * オブジェクト タイプは、受信スコープがオブジェクトであることを示し、ハンドラー関数はオブジェクトのメソッドであることを示します <br /> */<br /> $this->_aEventStack[] = array(<br /> "スタンプ" => $sスタンプ,<br> "値" => $sValue,<br> "ハンドラー" => $fHandler,<br> 「スコープ」 => $mScope,<br> "タイムスタンプ" => time()<br> );<br> $iKey = sizeof($this->_aEventStack) - 1;<br> $this->notifyWatcher($iKey);<br> return $iKey;<br> }<br> パブリック関数 addWatcher($oWatcher, $sWatchStamp) {<br> }<br> ##C##<br> パブリック関数 clearEventStack() {<br> // イベントスタックをクリア<br> }<br> ##E##<br> パブリック関数exportEventStack() {<br> //デバッグ情報を出力します<br> }<br> ##G##<br> パブリック関数 getStack($iStackId) {<br> //スタック シーケンス番号が指定されているかどうかに応じて、スタック リストまたは指定されたスタックの内容を返します<br> }<br> ##N##<br> プライベート関数notifyWatcher($iKey) {<br> //イベントを関連する観察者に推送します<br> if (array_key_exists($this->_aEventStack[$iKey]["stamp"], $this->_aWatcherRegistry)) {<br> $mCallback = $this->aWatcherRegistry[$this->_aEventStack[$iKey]["スタンプ"]](<br> $this->_aEventStack[$iKey]["スタンプ"],<br> $this->_aEventStack[$iKey]["値"],<br> $this->_aEventStack[$iKey]["ハンドラー"],<br> $this->_aEventStack[$iKey]["スコープ"] <div class="clear"></div>