我正在用Drupal的PHP自动测试工作。这是一个有两种我关心的方法的类:pass()
和fail()
。每个人在结果页面上产生一个单独的行,指示特定操作是否通过或失败,例如,三元或类似的选择功能?
if ($value == "expected_value") {
$this->pass("Looking for expected value");
} else {
$this->fail("Looking for expected value");
}
我注意到上面的内容是它有点冗长。我想做类似三元赋值的事情,而不是在我决定调用哪个函数的地方。喜欢的东西:
$function = ($value == "expected_value") ? "pass" : "fail" ;
$this->$function("Looking for expected value.");
这是最简洁,优雅的方式,我可以词组这种逻辑?我试过
$this->(($value == "expected_value") ? "pass" : "fail")("Looking for expected value.");
但是我得到了一个解析错误。是否有办法将它归结为一行,如三元赋值?
编辑我发现的冗长不是if-else
结构,但我重复两次相同的消息。在我看来,应该有一种表达方式,我只在这里宣布信息。当然,我可以把它放在一个变量中,但是这占用了额外的空间,我也通过了两次。
下面是构建我的问题的另一种方式:是否有一种方法可以定义此逻辑,但只能一次性表示Looking for expected value
?
看来你正试图通过语法来简化,而不是通过设计。不要试图压缩你的代码,而要创建一个简单的类来验证数据并自动调用通过/失败。尝试从应用程序特定代码中获取'通用'代码。 –
我同意。通过一切手段,使用KingCrunch的答案中显示的三元组,但是这样做是为了替换函数名称本身?这样下去只有疯狂的谎言。如果你在两年内打开这个网站并试图弄清楚到底发生了什么,那么好处(我向你保证你完全被感知,而不是真实的)不值一秒钟的困惑。 – Andrew