我实际上是在尝试监视一个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。
答案 0 :(得分:5)
在PHP中没有内置的方法可以做到这一点,并且没有简单的方法来添加它。无论如何,语言的工作方式并不合适。
您可以构建一个处理错误的自定义函数,而不是设置变量,或者使用custom error handler.
使用PHP的内置错误处理功能另一种接近你想做的错误处理方法(我认为)是exceptions。
答案 1 :(得分:5)