2017-03-03 56 views
-1

我剛開始學習PHP OOP - 我一直在使用程序風格編程,並堅持下去,現在我試圖讓我的頭繞過使用面向對象 - 什麼是使用公共私有的好處?面向對象的PHP - 暴露公共領域vs使用公共訪問者?

所以

class person { 
    public $name; 
    function __construct($name) { 
     $this->name = $name; 
    } 
}  

$newPerson = new person('Tom'); 
echo $newPerson->name; 

VS

class person { 
    private $name; 
    function __construct($name) { 
     $this->name = $name; 
    } 
    function getName() { 
     return $this->name; 
    } 
}  

$newPerson = new person('Tom'); 
echo $newPerson->getName(); 

請告訴我的優勢,利用私人與公開?

+2

私有屬性只能在類是可訪問的,而你可以在類訪問公共財產,並在子類。 – Deep

+0

@Deep不是真的... - * public *:從任何地方訪問。 - *保護*:從班級訪問,它是兒童。 - * private *:只能從班級訪問。 –

+0

一篇關於PHP的好文章http://russellscottwalker.blogspot.com/2013/09/public-properties-getters-and-setters.html。總的來說,雖然這是一個模式選擇使用它或不。你會在任何地方都能找到佈道者和說唱者。 – nerdlyist

回答

-1

在你的案例研究中,兩種方法都是一樣的。

但是第一種方法並沒有真正從OOP中受益。 第二個方法讓你延長人類重新定義的getName功能,像這樣的:

class superPerson extends person { 
    function getName() { 
     return "Super " . parent::getName(); 
    } 
} 

$newPerson = new superPerson('Tom'); 
echo $newPerson->getName(); //Give you "Super Tom"