检查方法是否为假,如果是,则输出结果。

4
我有一个类,其中包含一个方法,用于执行各种数据库检查。然后,如果存在,它返回值。
这里是一个非常基本的设置示例:
PHP类
class myClass{

   var $aVar1;
   var $aVar2;

   function myMethod() 
   {
       // database query
       // if results from query return **results**
       // else return false
   }

}

HTML/PHP 文件
// setup $myClass object var

<?php if($myClass->myMethod(): ?>
    // lots of html
    <?php echo $myClass->myMethod() ?>
    // lots of html
<?php endif; ?>

这个文本的英语翻译为:

这种情况在我的文件中多次发生,使用不同的方法。我的问题是,我最初调用该方法并检查它是否为false,然后再次调用它来echo输出。

我可以这样做,但每个方法都需要一个变量声明,这种方法可能不够专业。难道没有更专业的方法吗?

<?php 
$myMethod = $myClass->myMethod();
if($myMethod): ?>
    // lots of html
    <?php echo $myMethod ?>
    // lots of html
<?php endif; ?>

有没有更干净、更高效的方法来做这件事?

如果使用 $result = $myclass->my method();,然后检查 ($result) { lots of html } else query failed,这样怎么样? - Priyesh Kumar
2个回答

3

年代久远的问题。一种常见技巧是将返回值存储在临时变量中。

$result=$myClass->myMethod();
if($result!=FALSE)
  echo $result;

您可以使用更简单的版本。
if($result=$myClass->myMethod())
echo $result;

而且你还可以使用最简单的方法!
echo $myClass->myMethod() ?: '';

比最简单的还要简单!
echo $result=$myClass->myMethod();

这个 if($result=$myClass->myMethod()) 是否在 if 语句中声明了值,然后运行条件 if true?如果是的话,它似乎是完美的解决方案。 - user5483305
没错。如果赋给 $result 的值不是 NULL/FALSE,它将返回 true。 - Hanky Panky
最简单的方法在我的情况下不起作用,因为有很多HTML是通过初始if语句有条件地加载的。我目前使用“最简单的”来处理单行“echo”语句,在这种情况下除了“echo”本身以外不需要任何条件。 - user5483305

2
您可以通过以下方式减少冗长:
<?php

function foo($bool = true) {
    $result = array();
    if($bool) {
        $result = array('bar');
    }

    return $result;
}

if(! array()) {
    echo 'empty array evaluates to false.';
}

if($result = foo()) {
    var_export($result); // Will dump array with 'bar'.
}

if($result = foo(false)) {
    var_export($result); // Won't happen.
}

如果您的返回值为真,则if语句中的内容将被执行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接