2016-06-07 102 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