ホームページ > バックエンド開発 > PHPチュートリアル > PHP コールバック関数に暗雲が立ち込める

PHP コールバック関数に暗雲が立ち込める

WBOY
リリース: 2016-06-13 12:33:06
オリジナル
890 人が閲覧しました

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 />
?>
ログイン後にコピー




/EventStack.php

<?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>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート