2009-11-27 41 views
10

我有這樣的代碼檢查PHP函數返回空值或沒有

$return = $ep->$method($params); 
if ($return === null) { 
    throw new Exception('Endpoint has no return value'); 
} 
return $return; 

有沒有辦法返回null的方法,並且不返回任何的方法來區分?

+0

這是不工作'如果($回報=== 「」){}'? – KeepMove 2015-02-04 08:50:23

回答

29

這是不可能的。當沒有設置返回值時,函數自動返回null。

+3

沒有什麼不可能:) – Pasta 2009-11-27 17:04:20

+31

對不起,正確的答案是。是的,您可以修改和重新編譯PHP源代碼。 :P – William 2009-11-27 17:05:37

0

你可以讓函數返回另一個值嗎?布爾真實可能,並檢查它或null。

+0

我並不總是成爲編寫 – 2009-11-27 19:44:51

1

如果函數沒有返回任何東西,那麼你不應該測試它的返回值。你應該知道哪些函數有望返回什麼或什麼都不返回 - 即使你不是寫它們的人。

+1

函數的人。通常,是的,但在這種情況下,函數是動態查找的。 – 2010-12-29 12:51:09

+0

那麼根據其他答案和提供的信息,我預見到的唯一解決方案是PHP解析它自己的代碼並在函數聲明中尋找「return」關鍵字。 – Rolf 2010-12-29 17:16:04

0

隨着PHP7 ’的返回類型聲明功能:

function a(): void { 
    return null; // :(
} 

function b(): void { 
    // :) 
} 

function c(): void { 
    return; // :) 
}