检查方法是否为false然后输出结果

时间:2016-06-15 06:46:22

标签: php class

我有一个包含执行各种数据库检查的方法的类。然后它返回值,如果存在。

这是一个非常基本的设置示例:

PHP Class

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; ?>

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

我可以执行以下操作,但最终会在每个方法上使用变量声明。必须有更专业的方法吗?

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

有更清洁更有效的方法吗?

2 个答案:

答案 0 :(得分:3)

古老的问题。一种常见的技术是将返回值存储在临时变量

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

您还可以使用更简单的版本

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

你也可以使用最简单的一个!

echo $myClass->myMethod() ?: '';

比最简单的一个简单!

echo $result=$myClass->myMethod();

答案 1 :(得分: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的内容将会执行。