5

私は実際にPHP変数を監視しようとしています(別のスレッドとして存在する可能性がありますが、PHPでは不可能です)。変数の値が変化するたびにPHP関数を起動します。

例: $_GLOBALS['foo']=1; という変数を取ります。

コードのどこかで $_GLOBALS['foo'] の値が別の値に変更された場合、すぐに PHP 関数を起動したいと考えています。

変数は、ループ内または関数内などのどこにでも置くことができます。

これが必要な理由: 最後に発生したエラーをテキストとして格納する変数があります。変数の値が "" から別の値に変化した場合、エラーを発生させたいと考えています。私のロジックは少し奇妙に見えるかもしれませんが、これが私がやりたいことです。

事前にサンクス。

編集:私は試しました: PHPでモニターを使用するには? PHPアプリケーションでマルチスレッドを使用する方法はありますが、問題を解決していないようです。

コード (これにより、私の質問に対する疑問が解決されると思います):

public function addtag($tagarray,$uid,$tagtype="1")
{
    $dbobj=new dboperations();
    $uiobj=new uifriend();
    $tagid=$uiobj->randomstring(30,DB_SOCIAL,SOCIAL_TAG,tag_tagid);
    $c=0;
    foreach($tagarray as $tags)
    {
        $c++;
        $tagname=$tags["tagname"];
        $taguid=$tags["tagid"];
        $dbobj->dbinsert("INSERT INTO ".SOCIAL_TAG." (".tag_tagid.",".tag_fuid.",".tag_tuid.",".tag_tagname.",".tag_tagtype.") VALUES
                ('$tagid','$uid','$taguid','$tagname','$tagtype')",DB_SOCIAL);
    }
    if($c==0)
    {
        $lasterror="No tags were added";return "";
    }
    else
    {
        return $tagid;
    }
}

ここで、変数を監視する代わりにエラー処理関数を呼び出すと、エラー処理関数はアラートを発行してページにリダイレクトするなどの操作を実行する可能性があるため、私の場合はお勧めできません。

この質問をした原因は、スクリプトが行 return ""; に到達しない場合はどうなるかを考えたからです。プロジェクトのワークフローに影響します。それが私が心配していることです。

そして、私が話していた変数は $lasterror であり、$lasterror が使用されているこのような多くの関数があります。

4

2 に答える 2

6

私はこれを見たので、これを構築しました:

https://github.com/leedavis81/vent

あなたの問題を解決する必要があります。

于 2014-02-25T13:22:22.033 に答える
5

PHP でこれを行う組み込みの方法はなく、簡単に追加する方法もありません。いずれにせよ、言語が機能する方法には、実際には適切ではありません。

変数を設定する代わりに、エラーを処理するカスタム関数を作成するか、カスタム エラー ハンドラを使用して PHP の組み込みエラー処理機能を使用することができます。

あなたがやりたいことに近い別のエラー処理方法(私は思う)はexceptionです。

于 2013-04-07T06:46:57.383 に答える