【问题标题】:How can I check all function values in PHP class?如何检查 PHP 类中的所有函数值?
【发布时间】:2014-05-05 23:43:13
【问题描述】:

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

我的问题是我想从数据库中检查一些东西,为此我需要创建至少三到四个函数。然后我将检查所有以前的函数是否返回 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

【问题讨论】:

  • 如果Function 是一个有效的类名,我会感到惊讶
  • 我可以创建类似 MyFunctionToCheckValuses 之类的名称..
  • 你真的应该重新考虑改变工作流程。这会变得非常混乱。如果您必须以任何一种方式检查查询,则必须检查真/假,但如果您真的不需要单独的函数,则可以将它们组合起来进行清理。
  • 我知道,但我会从不同的表中检查。我的意思是从 table_1、table_2 等。
  • 当然可以,但是您真的需要将它们作为单独的函数吗?它们在其他地方使用吗?

标签: php function class


【解决方案1】:

你可以这样做:

$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();
}

【讨论】:

    【解决方案2】:

    或者你可以试试这样的......

    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
    }
    

    这样您就可以继续进行下去。这样,您的函数将像循环一样工作,如果您想在数据库中插入数据,它将帮助您获得更准确的数据,它也将帮助您获取数据。表示如果第一个条件为假,那么它将调用处理所有假条件的函数。

    【讨论】:

      【解决方案3】:
      $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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-18
        • 2013-12-24
        • 2013-12-04
        • 1970-01-01
        相关资源
        最近更新 更多