如果varible变为非null,则为discountine函数

时间:2017-02-12 22:24:54

标签: php

如果我的错误变量(不是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.
}

1 个答案:

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