2017-07-24 59 views
6

我是在一個WordPress的課本,我發現了一個簡短描述下列函數讀取:爲什麼PHP函數在請求整數時接受布爾參數?

function is_super_admin($user_id = false) {... 

此函數確定用戶是網站管理員。

但是,我的問題是關於PHP如何處理參數。

上述函數接收整數參數,如果你通過什麼給它,然後它就會分配一個FALSE的默認值。

這裏是我的問題:

FALSEBOOLEAN數據類型,這個功能應該接受INTEGER數據類型。

所以你怎麼能允許它提供一個布爾值,當我們要提供一個整數值?

+1

你沒有聲明參數是int的任何地方,爲什麼不應該工作? – deceze

+0

PHP是動態輸入的。你可以傳遞不同類型的參數,除非另有特別的類型暗示。在這種特殊情況下,你基本上可以通過任何事情。 – Mjh

+0

在PHP中閱讀有關[type juggling](http://php.net/manual/en/language.types.type-juggling.php)的更多信息。 – axiac

回答

9

PHP 7引入了標量類型聲明。

他們有兩種口味:強制性(默認)和嚴格。現在可以強制執行以下參數類型(強制或嚴格):字符串(字符串),整數(int),浮點數(浮點數)和布爾值(布爾值)。它們增加了PHP 5中引入的其他類型:類名稱,接口,數組和可調用對象。

下面的行

function is_super_admin($user_id = false) { . . . . 

不指定paramater的類型。如果它是:

function is_super_admin(int $user_id = false) { . . . . 

然後它會產生一個錯誤。

我猜它默認爲false,因爲使用簡單的if來檢查一個有效值比較容易,因爲false和/或int等於0的結果都是false。

更多關於PHP 7個的新功能here

相關問題