如果我的错误变量(不是PHP错误,但输入无效时设置错误)设置而不经常检查错误变量,是否有办法让PHP停止执行类?像一个被动的倾听者?我的脚本有很多地方可能会发生错误。像这样:
if(empty($this->error)) $this->error= function1();
if(empty($this->error)) $this->error= function2();
if(empty($this->error)) $this->error= function3();
除非发生错误,否则$ this->错误始终返回空值。如果它永远不为null我想退出函数的其余部分而不必将if(空($ this->错误))放在所有内容之前。
编辑:进一步说明: 我想我想要一些能自动检查每行代码后$ this->错误是否为空的内容,而不是告诉它,然后退出函数,如果它不是空的,就像循环中断一样。
建议的帖子无法解决我的问题,因为他们仍然需要手动检查条件。我想要这样的东西:
stays_empty($this->error)
{
$this->error= function1();
//PHP checks if $this->error is still empty. Continue if it is, break if it's not.
$this->error= function2();
//PHP checks if $this->error is still empty. Continue if it is, break if it's not.
$this->error= function3();
//PHP checks if $this->error is still empty. Continue if it is, break if it's not.
}
答案 0 :(得分:0)
在进行重复操作时,您应该考虑使用循环而不是多次重复代码。
许多人可能不知道这一点,但您实际上也可以使用变量函数名称,如本例所示。
<?php
class Whatever
{
function __construct() {
// Names of the functions we wish to run
$functionNameList = ['function1', 'function2', 'function3'];
// Looping our function names
foreach ($functionNameList as $key => $functionName) {
// Inserting variable as function name
$this->error = $this->$functionName();
if ($this->error) {
echo 'Error found ';
break; // This would break out of the foreach loop [OR]
return; // This will break out of the function
}
}
}
public function function1() {
echo 1;
return '';
}
public function function2() {
echo 2;
return 'error';
}
public function function3() {
echo 3;
return '';
}
}
$x = new Whatever();
您也可以使用其他答案中提到的例外情况,但我会以适合任何重复情况的方式回答您的问题。
编辑:短版
$functionNameList = ['function1', 'function2', 'function3'];
foreach ($functionNameList as $key => $functionName) {
$this->error = $this->$functionName();
if ($this->error) {
break;
}
}
编辑:超短版(不太清楚)
$functionNameList = ['function1', 'function2', 'function3'];
foreach ($functionNameList as $key => $functionName) {
if ($this->error = $this->$functionName()) {
break;
}
}