我有这样的代码:
$finalResult = true;
$finalResult = $finalResult && function_01();
// some code here
$finalResult = $finalResult && function_02();
// some many lines of code here
$finalResult = $finalResult && function_XX();
我正在寻找一种方法如何缩短代码(仅出于人类可读性的原因),如下所示:
$finalResult = true;
$finalResult &&= function_01();
// some code here
$finalResult &&= function_02();
// some many lines of code here
$finalResult &&= function_XX();
但当然这不起作用,运算符&=
不是布尔值,而是二进制。
我该怎么做?
感谢。
答案 0 :(得分:1)
$names = array('function01','function02'...);
$result = true;
foreach($names as $caller)
{
$result = $result && $caller();
}
否则你可以寻找call_user_func(http://us3.php.net/call_user_func)而不是$ caller()
这不是很棒,但它更短:/不是什么大不了的事。
修改强> 嗯...我想在你编辑之后这个解决方案没有更多功能......我应该删除吗?
我还会通过添加一个进行这些检查的类来重新考虑代码的逻辑:如果所有检查逻辑都在一个类中,其目的只是为了确保可读性的好处
答案 1 :(得分:1)
$names = array( 'function01','function02'... );
$result = true;
foreach( $names as $caller )
{
if ( $result == false ) break; // short circuit
$ret = $caller()
if ( $ret == false )
{
$result = false;
break; // short circuit
}
$result = $result && $ret;
}
答案 2 :(得分:0)
好吧,毕竟看起来我不会比原版更简单。
对于那些不明白为什么我想以某种“短”形式拥有它的人 - 唯一的理由是让它更短更好。正是为什么有可能为了美而写$a += 3
的原因。
无论如何,感谢大家:)