2017-03-03 70 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"