2017-09-15 36 views
0

根據標題,在我的WordPress 4.8,PHP 7.1項目中,如果我在我的方法中使用類型聲明,它們是嚴格的,而不是強制性的。但我沒有宣佈使用嚴格的類型。PHP 7 strict_types似乎全局打開?

WordPress是否在任何地方設置?我明顯搜索了strict_types這個詞,但找不到任何東西。

它可以在全球範圍內啓用嗎?儘管我讀過的所有東西都說不能完成?

更具體地講,我的方法簽名是:

my_method(int $id, string $string) 

我打電話是想:

my_method(123, null) 
+0

服務器可能已經安裝了這個:https://github.com/krakjoe/autostrict但除此之外,我不得不質疑你如何確定'strict_types'是有效的。 – Narf

+0

你能與我們分享這表明你,strict_types是證據?您收到的含義代碼示例/消息? –

+1

什麼類型?有些類型不能被強制。 (沒有冒犯的意圖,我沒有暗示你不知道,只是爲了清楚起見。) –

回答

2

你問這個基礎上在您的評論的例子假設,某些類型的不能被強制爲其他類型,即使strict typing尚未啓用。

例如,從您的評論毫無意義的實現的實例方法的:

function my_method(int $id, string $string) { 
    var_dump($id, $string); 
} 

傳遞一個null值的$string參數引起TypeError,即使事情像

my_method(123, false); // int 123, string '' 
my_method(123, 456);  // int 123, string '456' 

能夠被裹挾到指定的類型,甚至沒有一個警告。

由於您使用的PHP 7.1,你可以使用新的nullable type declaration允許空值。

function my_method(int $id, ?string $string) { ... 
相關問題