如何检查PHP类中的所有函数值?

时间:2014-05-05 23:43:13

标签: php function class

我对PHP Class感到困惑。我知道它是如何工作但仍然困惑。需要帮助来解决问题。

我的问题是我想从数据库中检查一些东西,为此我需要创建至少三到四个函数。然后我将检查所有先前的函数是否返回true。如果所有都返回true,则第六个函数将起作用,或者如果任何单个函数返回false,则第七个函数将运行。

这样的剧本,

<?php
class Function{
    function one(){
        //does database query

        if(success){
            return true;
        } 

        else {
            return false;
        }
    }
    function two(){
        //does database query

        if(success){
            return true;
        } 

        else {
            return false;
        }
    }
    function three(){
        //does database query

        if(success){
            return true;
        } 

        else {
            return false;
        }
    }
    function four(){
        //does database query

        if(success){
            return true;
        } 

        else {
            return false;
        }
    }
    function five(){
        //checks what all function are returning
        if(all functions are true){
            do_sixth_function();
        }else{
            do_seventh_function();
        }
    }
    function do_sixth_function(){
        //show details to user.
    }
    function do_seventh_function(){
        //forward user to somewhere.
    }

}
?>

这样的事情,但问题是我不知道如何创建第五个函数来检查每个函数的所有值。

我可以/我应该创建这样的函数吗?

function five(){
            //checks what all function are returning
            if((one() === true) AND (two() === true) AND (three()() === true) AND (four() === true)){
                do_sixth_function();
            }else{
                do_seventh_function();
            }
        }

如果有人能帮助我,请告诉我。不管怎么说,多谢拉。 :d

3 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

$methods = array('one', 'two', 'three', 'four');
foreach ($methods as $v) {
    if (!$this->$v()) { // Or if (!call_user_func(array($this, $v))) {
        $this->seven();
        break;
    }

    $this->six();
}

答案 1 :(得分:1)

或者你可以尝试这样的事情......

function one(){
    if(this is true){

        function two();
        return true;
    }

    else {
        function false_value();
        return false;
    }
}

function two(){
    if(this is true){
        function three();
        return true;
    }
    else {
        function false_value();
        return false;
    }

}

function false_value(){
    //this function will handle all invalid or false values
}

所以你可以继续这样做。通过这种方式,您的函数将像循环一样工作,如果您想在数据库中插入数据,它将帮助您获得更准确的数据,它也将帮助您获取数据。意味着如果第一个条件为假,那么它将调用将处理所有错误条件的函数。

答案 2 :(得分:0)

$methods = array('one', 'two', 'three', 'four');
$found = false;
foreach ($methods as $v) {
    if (!$this->$v()) {
      $found = true;
      break;
    }
}
if(!$found) $this->do_sixth_function();
else $this->do_seventh_function();