PHP类def:单独的访问器/ mutator或带有switch()的__set()?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP类def:单独的访问器/ mutator或带有switch()的__set()?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在定义 PHP类时,哪个是首选/最佳实践?我有什么关键差异吗?

看起来编写一个__set()魔方法可以更干净,更简洁,更方便,并在其中放置一个swITch()构造,其中包含我想允许访问的所有私有成员的案例.它不会从类内部自动调用,但是再也不会setFoo(),所以如果我想在内部使用accessor / mutator,我必须以任何方式显式调用方法.

一个区别是,在类外部的代码中,我总是可以以与$obj-> foo相同的方式访问成员变量,无论是公共(直接)还是私有(使用__set()),而不是使用许多单独的方法.

我想这主要归功于美学选择.例如,如果我有购买的地址数据,我不希望有16个或更多单独的访问者方法,仅用于名字,姓氏,地址1,地址2,城市,州等,每个用于运送和计费数据.

我忽略了哪些关键差异? (一个复杂的IDE可能拒绝在课外自动完成一个成员名称,因为它被标记为私有?)我几乎回答了我自己的原始问题吗?提前感谢您的意见.

与您希望从外部访问的每个成员一起使用各个访问者.我试过两个并发现这些原因使用访问器:

>无论您使用什么来记录您的API(doxygen / PHPdoc / Zend),生成的文档都不会显示可通过魔术函数访问的成员.>您可以记录访问者.你真的应该能够在文档中添加这样的行:“重要!这个函数连接到数据库,它会非常慢,如果可以,请使用OtherFunction().”>任何人都可以轻松看到访问者的实现.我不想深入研究200行魔术函数细节,以检查访问者除了设置/获取值之外是否做了什么(这就是为什么我们最终会编写访问器.)>您已经提到过IDE的自动完成功能.> __get()函数一个明确定义的函数头,因此你将无法创建返回引用的getter(例如,在使用数组时非常好,即$numbers =& $object- > getNumbers(); $numbers [] = 4; – 如果没有引用,则需要再次调用setter.)

脚本宝典总结

以上是脚本宝典为你收集整理的PHP类def:单独的访问器/ mutator或带有switch()的__set()?全部内容,希望文章能够帮你解决PHP类def:单独的访问器/ mutator或带有switch()的__set()?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。