2016-06-07 115 views
1

我經常會感到困惑,不管我是最好使用靜態屬性還是隻使用公有屬性。
例如,我有一個類EventDispatcher,我想擁有最大聽衆和自動觸發器配置。
這是一個更好的何時聲明靜態屬性?

<?php 
class EventDispatcher 
{ 
    public static $auto_trigger = 0; 
    public static $max_listeners = 30; 

或這一個

<?php 
class EventDispatcher 
{ 
    public $auto_trigger = 0; 
    public $max_listeners = 30; 

那麼,哪一個更好?
我很困惑,因爲該屬性相當於'配置'屬性而不僅僅是基本屬性。

我經常在靜態或非靜態選擇之間感到困惑,但我知道靜態的像全局類,非常容易訪問。但在實際情況下,選擇仍然很困難。

+0

@DanyalSandeelo你誤會了我的問題..它不是重複的。如果我換句話說,我的問題就像'靜態,何時使用而不是常量或公共屬性'。 –

回答

2

總的來說它取決於你將要使用的屬性,但我通常避免使用靜態屬性,因爲你可以從任何地方調用它們而不用創建對象的實例,我更喜歡一些封裝,有getters和setter等

如果您知道屬性是不會改變的東西,我建議使用一個常量,您也可以訪問未做對象的實例:

class BookModel { 
    const TABLE_NAME = 'books'; 
} 

echo BookModel::TABLE_NAME; 

否則,我會建議你保持你的屬性是非靜態的,這樣它們將綁定到一個對象實例,你可以馬上它是一個吸氣劑和二道助手。

+0

好的,所以重點是......永遠不要使用靜態屬性,對吧?因爲我們可以使用常量,對嗎? –

+0

而且,永遠不要使用公共財產,對吧? 既然我們應該讓它在setter和getter中使事情正常運行,那麼總是使用私有財產,對吧? –

+0

「永不」是一個極端,但通常你會犯的錯誤更少,而且你的代碼會更乾淨,因爲你會通過一種方法獲得並設置你的屬性,這意味着如果你必須與財產做一些操作。 – TheFallen