我在PHP中使用foreach循环时遇到了很多麻烦。
这不是通常的" break \ exit \ return \ whatever;"问题,我会解释原因:
class Example {
private function generic(/* args */) {
global $db;
$result = false;
/* a series of if and functions, mysql transactions and
"throw new Exception" on rollback */
$notif = new Notification();
$notif->send(/* params */);
/* if commit succeded > $result = true; */
return $result;
}
public function start() {
$list = array("abc" => array("foo" => "bar", "foo2" => "bar"), "def" => array("foo" => "bar", "foo2" => "bar"));
foreach($list as $x => $y) {
$this->generic($x, $y, ....);
}
}
}
问题似乎是$notif
声明和\或$notif->send()
函数。
我试图尝试\捕获整个generic()
函数以及send()
函数,但不会抛出异常。
send()
函数只不过是一系列查询,最终(在用户请求时)它通过swiftmailer发送电子邮件通知。
我可以给你的另一个细节是成功发送通知,一切似乎在第一次迭代时都能正常工作,但是foreach会停止。
正如我之前提到的:没有"退出();"或者"休息;"或者"返回$ x;"在函数中的一些奇怪点等等......
您是否知道问题可能是什么,或者我如何找到问题?