2016-05-11 23 views
2

我最近開始研究PHP 7中引入的新類型的提示,並發現它是一個非常好的和有用的補充添加到我的一些應用程序,因此我已經去做,但我有一個問題關於參數和返回類型提示。PHP7 - 可以鍵入提示可信嗎?

所以說我有一個基本的功能,它執行兩個參數的數學並返回一個整數。

function addTwo(int $a, int $b): int { 
    return $a + $b; 
} 

預期參數應該是整數,我們應該有希望接收來自所述函數的整數值,但是這總是保證或應該有進一步的驗證函數中進行,如is_int以確保兩個參數都是整數?

+1

你爲什麼不嘗試一下,看看? –

+0

我已經做了一些測試,但是我想知道它是否總是有保證,或者有些使用情況可能會有所不同並返回無效結果 – mhvvzmak1

+1

如果您提供給函數的內容不是整數,它將返回一個可捕獲的錯誤,因此您將會有錯誤或者返回一個int。 – skrilled

回答

3

這取決於條件。例如,在你的例子中傳輸行不會成功,但通過float - 沒有問題,它會默默地轉換爲int。

您必須編寫declare(strict_types = 1);

strict_types = 1只能應用於直接在第一行聲明它的文件,沒有辦法。

嚴格打字還會影響返回類型聲明。在 默認弱方式下,如果返回的值不是該類型,則會將其強制轉換爲正確的類型 。在強模式下,返回的 值必須是正確的類型,否則將拋出TypeError爲 。

Returning values

+0

所以,爲了澄清一下,如果我在文件中聲明瞭strict_types爲true,那麼我的函數立即失敗,無效的參數調用意味着它不會執行任何實際的函數?我特別感興趣的主要原因是因爲我更願意在開始時函數失敗,並且在函數可能已經使用無效數據類型執行了某些任務時拋出類型錯誤而不是函數的一半。 – mhvvzmak1

+0

如果在處理參數時出現類型錯誤,函數體將不會被執行。 – Andrea

相關問題