2013-12-14 36 views
-4

我注意到,幾乎與我寫的參數,每個PHP函數與以下行開始:檢查是否函數的參數是不是空的,以不同的方式使用PHP

if (! $first_parameter || ! $second_parameter){ 
     return false; 
} 

我的問題是有點奇怪。
我喜歡,因爲我知道,一個功能不會做

例具有功能(即不工作)與其他類型的表達式替換此,類似於操作數的東西:

require_parameters($first_parameter, $second_parameter); 

然而即使require_paremeters返回false,它不會從原來的功能

返回false將有可能寫一個函數或者一個C擴展爲PHP做一些與此類似:

require_parameters $first_parameter, $second_parameter; 

如果其中一個爲空,它將從原始函數返回false。

謝謝。

+0

嘗試'isset($ first_parameter)' –

+0

它不會從原來的功能 –

+0

空(返回false),除了在你明確地想用0,FALSE,或一個空字符串的情況下是可行的。 – user602525

回答

2

你在找什麼在技術上是不可能的。

要從原始函數返回false,您必須顯式使用return語句 - 不要繞過它。

在你的榜樣,您將需要使用:

return require_parameters($first_parameter, $second_parameter); 

但require_parameters的定義,必須使用可變參數,你永遠不知道你會多少個參數要求。

而且,由於PHP似乎沒有直接處理可變參數,因此您需要使用func_get_args()func_num_args()來檢查每個收到的arg是否已設置。 Docs可以找到here

更新:正如Jad指出的,這裏的錯誤是,無論結果如何,此函數都會返回。不幸的是,有沒有辦法(我知道的),以簡化下面,但是我們可以使用短路邏輯,使檢查比使用一個完全成熟的if短了很多:

更新:我不好的,返回後or不會工作。我害怕,我們不能比這更簡單。

if (!require_parameters($first_parameter, $second_parameter)) return false; 
+0

即使設置了參數,也將從該功能返回。他只想在沒有設置參數時返回。 – Barmar

+0

@Barmar它依賴於'require_parameters'的實現。 –

+0

@Barmar,這將返回任何'require_parameters()'請返回。在我們的例子中,如果其中的任何參數未設置,它將返回false - 並且這將觸發調用者,這也將返回false。 –

相關問題