我正在用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