我有一个包含执行各种数据库检查的方法的类。然后它返回值,如果存在。
这是一个非常基本的设置示例:
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; ?>
有更清洁更有效的方法吗?
答案 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的内容将会执行。