特定情况下的开关盒

utdev

在以下情况下如何切换情况:

例如,情况1如下所示:

if($this->hasA() && $this->hasB() && $this->hasC() && $this->hasD())
{
  # ....
}

情况2可能看起来像这样,依此类推:

if($this->hasA() && $this->hasB())
{
  # ....
}

该函数返回一个布尔值。

这样做可能不是一个好习惯,但是我想知道在切换情况下会是什么样子。

阿布拉·卡达弗

我个人不会在上执行此操作if,但是您可以打开true

switch(true) {
    case $this->hasA() && $this->hasB() && $this->hasC() && $this->hasD():
        //code
        break;

    case $this->hasA() && $this->hasB():
        //code
        break;
}

请记住,该功能(每个情况下,执行$this->hasA()$this->hasB()在上面的代码中两次),因此,如果他们是昂贵的(复杂的查询,文件加载等),那么你最好还是运行它们一次,然后多次检查结果。

如果任何一个案例共享一些代码,那么您将按顺序构造它而不使用它,break这样一个案例将一直执行到下一个案例。从您的示例尚不清楚,是否有些代码具有通用代码。

一个简单的例子:

switch(true) {
    case $this->hasA():
        //code

    case $this->hasB():
        //case above may or may not execute
        //more code

    case $this->hasC():
        //one or both cases above may or may not execute
        //more code
        break;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章