2011-07-19 83 views
13

它有什麼優勢,爲參數提供類型:函數參數前面的PHP類型,好還是壞?

public static function DoStuff(string $str) { 
    echo $str; 
} 

相比,不使用它們?

public static function DoStuff($str) { 
    echo $str; 
} 

如果我聲明我的類型,它可能運行得更快嗎?

+2

爲什麼不進行基準測試並查看? –

回答

23

您不能(使用PHP的當前版本)指定標量類型,例如string或int。你只能指定一個類/接口或數組。

手冊的相關頁面:Type Hinting


我看到使用類型提示至少有一個很大的優點:可讀性。很容易看出函數/方法期望的參數類型。

有些人會認爲這是一個缺點,如果你不尊重類型提示並傳遞一些非類型有效的參數,你將會得到一個可捕獲的致命錯誤。然而,

  • 我個人認爲它迫使開發人員要尊重你的接口更
  • 它可以讓你的代碼只接收的參數工作。

    • 製作中使用類型提示或不使用類型提示不應該是表演的考慮結果的決定:如果你的問題是關於速度
    • 所產生的誤差是開捕


    。您應該使用或不使用該功能。

  • 即使有一些性能影響,它應該是非常小的。我想說在考慮這個之前,你應該優化代碼的很多部分。


總之,個人意見:我經常使用這些類型的提示,就這樣:

  • 人在使用我的代碼知道他們預計在傳遞什麼(他們不這樣做總是閱讀文檔...)
  • 如果他們沒有做預期的事情,它會失敗;硬;在某種程度上,他們立即通知
  • 我的代碼不必檢查收到的參數是否是正確的類型:我知道這是,因爲PHP強制執行我的。
+2

此答案已過時,請參閱http://php.net/manual/en/functions.arguments.php#functions.arguments.type-claclaration – Blauhirn

+1

而不是將其稱爲「類型提示」,現在稱爲「類型聲明」。否則,答案仍然與我相關。 – WhiteHotLoveTiger

+0

請在撰寫本文時參考PHP的最新版本,因爲如上所述,此答案不再適用於當前版本的PHP。 – dctucker

6

一般來說,類型檢查/類型提示是一件好事,因爲它提供編譯器/解釋器必要的信息來做更好的錯誤檢查。當你不鍵入提示時,你的程序可能會默默地崩潰,而不會產生描述性錯誤。

1

的好處是,如果有人試圖使用不正確的功能(如使用一個類來代替另一種或者是不使用數組時,他們應該),你會得到一個錯誤的時候了。

但是,除了對象或數組之外,你無法做到這一點 - 所以你的例子中的字符串將不起作用。

隨着更多檢查的發生,它幾乎肯定會運行得更慢。

1

優勢三,我在PHP:

  1. 代碼變得更加自我描述
  2. 有用的,當你需要嚴格驗證,像數字或非設定值檢查。
  3. 通過顯示非終端php錯誤,告訴您您正在使用錯誤的變量值來限制變量的使用。

我不確定是否通過使用類型提高了性能。

相關問題