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 的内置错误处理功能使用自定义错误处理程序。

另一个接近你想要做的错误处理方法(我认为)是exceptions

于 2013-04-07T06:46:57.383 回答