2011-03-21 155 views
3

是否有一個很好的理由首先聲明構造函數之外的類所使用的變量?爲什麼要在類的構造函數中聲明變量?

class foo { 

    var bar; // why is this a good practice? (or could it be skipped?) 

    public function __construct() { 
     $this->foo = 'foobar'; 
    } 
} 

我經常看到它,但我不確定它是幹什麼的,因爲它似乎很好地將它們排除在外。

+2

這uneeded公共/默認瓦爾。但是明確的聲明給出了更好的概述。 – mario 2011-03-21 11:57:56

回答

6

在構造函數外聲明一個屬性實際上聲明瞭它。

如果你不這樣做,它會在一個值受到影響時自動創建。


我看到聲明性質的至少四大優勢:

  • 可以指定它們是否publicprotected,或private
  • 他們會通過你的IDE,它就能使用它們作爲建議當你輸入
    例如可以看出,這裏是截圖,顯示打字時的Eclipse PDT如何幫助:
    http://extern.pascal-martin.fr/so/5377256-1.png
  • 你可以添加一些PHPDoc的他們 - 這意味着他們將出現在您的代碼的文檔在(和IDE也可以使用,當你鍵入顯示更好的建議 - 見我的截圖)
  • 的聲明親perties使代碼更易於閱讀:
    • 當考慮看看你的類的定義,人會立刻看到使用哪些特性:無需從構造猜測(或任何其他方法)
    • 當然,添加合適的phpdoc也有幫助,在這裏也是如此。


所以:是的,即使PHP接受未聲明的屬性,你應該申報。

+0

更不用說它只是更容易閱讀,調試和周圍更漂亮看:) – xzyfer 2011-03-21 12:13:20

+0

非常詳細的答案,非常感謝:) – mikkelbreum 2011-03-21 13:06:28

+0

不客氣:-)玩得開心! – 2011-03-21 16:36:00

1

對於受保護的和私人成員,您需要聲明。對於公衆你可以離開,但爲了更好的可讀性,你應該聲明每一個成員。 而大多數IDE也使用聲明來提示幫助。

也許你需要它反映過,但我不知道它是否工作沒有,因爲我從來沒有試圖離開聲明:)

相關問題