使用PHP三元运算符将数据传递给方法

使用PHP三元运算符将数据传递给方法,php,methods,ternary,Php,Methods,Ternary,我一直在处理一些自定义类,包括一个调试bug方法。使用常量调试变量 define('DEBUG', 3); 我设置要显示的调试级别。从FALSE(无)、1(基本)、2(中等)、3(高级)等开始 在整个代码中,我都调用了上述调试方法。经验: if(DEBUG == TRUE) $this->status("DB connection",NULL); 这可以压缩成三元运算符吗?比如: $this->debug($title, $response, $die) = (DEBUG

我一直在处理一些自定义类,包括一个调试bug方法。使用常量调试变量

define('DEBUG', 3);
我设置要显示的调试级别。从FALSE(无)、1(基本)、2(中等)、3(高级)等开始

在整个代码中,我都调用了上述调试方法。经验:

if(DEBUG == TRUE)
    $this->status("DB connection",NULL);
这可以压缩成三元运算符吗?比如:

$this->debug($title, $response, $die) = (DEBUG == TRUE) ? ("DB Connection", NULL) : (NULL) ;

我知道它有点长,但是把它全部放在一行等会使它更容易维护。

为什么不把测试
if(DEBUG==随便什么)
放在
$this->DEBUG
函数里面呢

然后,您的代码如下所示:

$this->debug("DB Connection", NULL);
以及您的调试功能:

function debug($title, $response, $die = FALSE)
{
    if (DEBUG == whatever)
      dosomething();
}

为什么不把测试
if(DEBUG==无论如何)
放在
$this->DEBUG
函数中呢

然后,您的代码如下所示:

$this->debug("DB Connection", NULL);
以及您的调试功能:

function debug($title, $response, $die = FALSE)
{
    if (DEBUG == whatever)
      dosomething();
}

你应该反过来做。创建一个
debug
方法/函数,您可以使用调试级别调用该方法/函数,始终不带条件。在该方法中,确定是否满足该级别

$this->debug('DB connection', DEBUG_INFO);

public function debug($message, $level) {
    if (DEBUG >= $level) {
        echo $message;
    }
}

你应该反过来做。创建一个
debug
方法/函数,您可以使用调试级别调用该方法/函数,始终不带条件。在该方法中,确定是否满足该级别

$this->debug('DB connection', DEBUG_INFO);

public function debug($message, $level) {
    if (DEBUG >= $level) {
        echo $message;
    }
}

如果你想把所有的东西都放在一行,你可以用

DEBUG && $this->status("DB connection",NULL);

但是,与仅使用if语句相比,这可能会影响代码的可读性。

如果您倾向于将其全部放在一行中,则可以使用

DEBUG && $this->status("DB connection",NULL);

但是,与只使用if语句相比,这可能会影响代码的可读性。

我不知道这会起什么作用。检查
$this->debug()
中的标志不是更明智吗?@Pekka Damnit!我在方向盘上睡着了!我需要咖啡。我不知道这能做什么。检查
$this->debug()
中的标志不是更明智吗?@Pekka Damnit!我在方向盘上睡着了!我需要咖啡。虽然调试方法比这个例子要复杂一点,但它正是我想要的。如果不使用IF/then,那么case select会是一个更好的选项吗?因为我有多个级别的调试?无论什么都可以使您的船浮起来。:)太棒了,这不是我想要的答案,但我用更少的代码完成了这项工作。谢谢。虽然调试方法比这个例子要复杂一点,但它正是我想要的。如果不使用IF/then,那么case select会是一个更好的选项吗?因为我有多个级别的调试?无论什么都可以使您的船浮起来。:)太棒了,这不是我想要的答案,但我用更少的代码完成了这项工作。谢谢