php - 在一个类中拥有相当数量的公共(public)属性是否合理?

标签 php class refactoring class-design

或者更具体地说,不依赖 setter 和 getter 是否“可以”?

我正在处理一个类,该类检查房间的可用性并设置公共(public)属性,其中有十多个。例如:

  • 单位编号
  • 房间类型(数组)
  • 代码公司
  • 代码组
  • 数字 child
  • 成人人数
  • 房间数
  • 货币
  • 最低利率
  • 最大速率
  • 肥皂服务器
  • 单位(数组)
  • 酒店ID

实例化对象后,这些属性将通过 $this-> 设置各种方法里面。然而,处理对象的代码通常直接设置公共(public)属性,而不是使用 getter/setter 方法:

$object->something = 3;

foreach ($object->things as $thing ) { }

如果我有时间重构这个类..

  • 我是否应该将所有这些属性粘贴在私有(private)属性的数据数组中,并定义 __set__get方法?
  • 我应该为每个属性创建一个 getter 方法吗?

最佳答案

在我看来,拥有任何公共(public)成员并不是一个好主意。它增加了类之间的耦合,并使重构变得非常复杂(如果您需要的话)。

Setter/Getters 是正确的选择,您为此付出的非常小的性能损失通常要么被优化掉,要么被优雅所压倒。

要回答关于数组与每个变量单一 getter 的问题,这是一个品味问题。我倾向于只将类似类型的变量保留在数组中,并将其余变量分开。

关于php - 在一个类中拥有相当数量的公共(public)属性是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225065/

相关文章:

php - 如何根据列字段显示MySQL数据

ruby - 为什么可以在没有父类实例的情况下调用某些类和/或方法?

C++ 类 : Pass by reference

c++ - 寻找类中的隐式沟通

c# - Visual Studio 重构快速操作和重构错误

php - 为什么socket read不离开循环?

PHP/SQL : SELECT 2 columns 3 times with different values

PHP 事件日历

python - 从单独文件中的类创建对象

python - 将函数/方法移动到类