除了if(!empty( $product->a_funky_function() ))
之外我还可以使用什么方法在调用之前检查方法是否为空?
我尝试了method_exists()
和function_exists()
以及众多条件。我认为问题是我需要在那里拥有$product
变量。
请帮忙。
答案 0 :(得分:2)
一个相当常见的模式是在您的班级上有两个方法,分别是getField
和hasField
。前者返回值,后者返回true或false,具体取决于是否设置了值(其中"设置"可以表示不为空,或者不为空,或者您可能想要的其他任何意思)
一个例子:
class Foo
{
/** @var string */
private $field;
/**
* @return string
*/
public function getField()
{
return $this->field;
}
/**
* @return bool
*/
public function hasField()
{
return $this->getField() !== null;
}
}
然后使用它:
if ($foo->hasField()) {
$field = $foo->getField();
...
}
通常,就像在这个例子中一样,has...
方法通常只是在内部委托给get...
方法,以节省重复逻辑。如果getter包含特别繁重的处理(例如数据库查找或API调用),您可能想要考虑避免两次执行它的方法,但这有点超出范围。
答案 1 :(得分:1)
你需要完全调用它以便它可以计算它将返回的值,所以我认为没有其他方法可以知道它是否会在不调用它的情况下返回非空的内容...
答案 2 :(得分:0)
你必须打电话。
$result = $product->getFunction();
if(!empty($result)) {
//your code here
}