监视PHP变量以获得值的更改

时间:2013-04-07 06:42:57

标签: php

我实际上是在尝试监视一个PHP变量(可能是一个单独的线程但在PHP中不可能)并且只要变量的值发生变化就会激活PHP函数。

例如:让变量$ _GLOBALS ['foo'] = 1;

如果代码中的任何一点,$ _GLOBALS ['foo']的值变为其他东西,我想立即触发PHP函数。

变量可以是循环内部或函数中的任何位置等。

为什么我要这个:我有一个变量,用于存储作为文本出现的最后一个错误。如果变量的值从“”更改为其他值,我想触发错误。我的LOGIC可能看起来有点奇怪,但这就是我想做的事。

提前完成。

修改:我尝试了How to use monitors in PHP?How can one use multi threading in PHP applications,但似乎无法解决问题。

守则(认为这可以解决您对我的问题的一些疑虑):

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;
    }
}

这里,如果我调用错误处理函数而不是监视变量,在我的情况下它是不可取的,因为错误处理函数可以执行任何操作,例如给出警报并重定向到页面或任何类似的操作。

我问这个问题的原因,我想如果脚本没有到达该行怎么办 返回“”; 这会影响项目的工作流程。这就是我所担心的。

我正在谈论的变量是$ lasterror,我有许多这样的函数,其中使用$ lasterror。

2 个答案:

答案 0 :(得分:5)

在PHP中没有内置的方法可以做到这一点,并且没有简单的方法来添加它。无论如何,语言的工作方式并不合适。

您可以构建一个处理错误的自定义函数,而不是设置变量,或者使用custom error handler.

使用PHP的内置错误处理功能

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

答案 1 :(得分:5)

我看到了这个,所以我建立了这个:

https://github.com/leedavis81/vent

应该解决你的问题。