Wis*_*guy 8 php oop coding-style
在定义PHP类时,哪个是首选/最佳实践?我有什么关键差异吗?
看起来它可以更干净,简洁,更方便地编写一个__set()
魔术方法,并switch()
在其中放置一个构造,其中包含我想要允许访问的所有私有成员的案例.它不会从类内部自动调用,但是也不会再调用setFoo()
,所以如果我想在内部使用accessor/mutator,我必须以任何方式显式调用方法.
另一个区别是,在类外部的代码中,我总是可以以与$obj->foo
公共(直接)或私有(使用__set()
)相同的方式访问成员变量,而不是使用许多单独的方法.
我想这主要归结为审美选择.例如,如果我有购买的地址数据,我不希望有16个或更多单独的访问者方法,仅用于名字,姓氏,地址1,地址2,城市,州等,每个用于运送和账单数据.
我忽略了哪些关键差异?(一个复杂的IDE可能拒绝在课外自动完成一个成员名称,因为它被标记为私有?)我几乎回答了我自己的原始问题吗?提前感谢您的意见.
与您希望从外部访问的每个成员一起使用各个访问者.我试过两个并发现这些原因使用访问器:
$numbers = &$object->getNumbers(); $numbers[] = 4;
- 没有引用,你需要再次打电话给安装员.)我看到的最大区别是 phpdoc :
__set
,您将无法为每个访问器生成 phpdoc@property
尽管在这一点上使用可能会有所帮助)。Personnaly,我会自己定义访问器,即使这意味着要编写更多代码:
__set
方法。此外,我会在从类内部设置属性时使用这些访问器方法:这意味着更多的代码,是的 - 但它也意味着通过它们包含的特定代码(例如检查某些内容的代码)。
最后,如果你只是使用一些属性来存储数据,并且不需要定义任何特定的行为,为什么不将它们公开,并允许用户直接访问它们呢?