我应该在getter / setter中使用private关键字还是public关键字?

时间:2014-11-06 17:22:23

标签: php oop encapsulation

我还在OOP学习。我有一个问题,即使用在Getter和Setter中使用的私有关键字。根据我对私有关键字的理解,它无法从课外访问。这是一本从书中复制的片段!

<?php
//GetSet.php
class GetSet
{
     private $dataWarehouse;
     function __construct()
     {
         $this->setter(200);
         $got= $this->getter();
         echo $got;
     }

     private function getter()
     {
         return $this->dataWarehouse;
     }

     private function setter($setValue)
     {
          $this->dataWarehouse=$setValue;
     }
}

$worker=new GetSet();

?>

但是,我在Getter和Setter中使用 public 关键字看到了很多。因此,该书说,如果我们在Getter和Setter中使用公共关键字,它可以打破封装概念&#34; 。

我的问题是&#34;我应该在Getter和Setter中使用公开私有关键字吗?或者这是基于业务要求吗?&#34;。

1 个答案:

答案 0 :(得分:2)

如果你有足够的getter和setter方法用于该变量,我会将其设为私有更安全。

This programmer's question也为使用私有变量提出了一些其他实际论据。

  

可以从课外访问公共成员,出于实际考虑,这意味着“可能在任何地方”。如果公共领域出现问题,罪魁祸首可以在任何地方,因此为了追踪错误,你可能需要查看相当多的代码。

     相比之下,私有成员只能从同一个类中访问,因此如果出现问题,通常只有一个源文件可供查看。如果您的项目中有一百万行代码,但您的类保持较小,这可以将您的错误跟踪工作量减少1000倍。