我习惯于将我的所有类变量设为私有,并创建获取/设置它们的“包装器”函数:
class Something{ private $var; function getVar(){ $return $this->var; } } $smth = new Something(); echo $smth->getVar();
我看到很多人这样做,所以我最终做了同样的事情:)
以这种方式使用它们是否有任何优势:
class Something{ public $var; } $smth = new Something(); echp $smth->var;
?
我知道私有意味着你不能直接在课外访问它们,但对我来说,如果变量可以从任何地方访问那么它似乎并不重要……
那么私有变量是否还有其他隐藏的优势?
如果您想将私有变量与公共getter和setter一起使用,或者您只是想将变量直接声明为public,则会因情况而异.
原文链接:https://www.f2er.com/php/134789.html使用“getter”和“setter”可能是好的原因是,如果你想控制某人访问数据的时间.
举个例子,假设你得到了这个:
public setBirthday($date)
然后,您可以确保传递给该setter的日期是有效的生日.
但是,如果您只是将变量声明为公共,则不能
public $birthday;
根据评论.
Also,if you decide change the
internal storage mechanism from a
string containing the date to the
number of seconds since 1/1/1970,you
can still present the date externally
in the same way if you use
encapsulation,but not if you expose
the variables directly. Every piece of
code that touched the internal
variable directly would now be broken.
这意味着如果内部存储机制从1970年1月1日起变为秒数,那么您不必更改“外部API”.原因是你完全控制它:
public getBirthday() { // you can still return a string formatted date,even though your // private variable contains number of seconds from 1/1/1970 }