首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP类封装选项

问PHP类封装选项
EN

Stack Overflow用户
提问于 2012-08-30 18:46:23
回答 2查看 615关注 0票数 2

在最近的阅读中,我看到了关于封装方法和OOP最佳实践的相互矛盾的建议。

我开始开发一系列PHP类,这些类将用于将数据从多个源系统传输和转换到最终目的地。因此,第一类的属性将包含源URL和身份验证值。

以下哪一项最适合于具有无限扩展潜力的长期项目?

  1. 申报为公共财产。在构造类时,为每个源设置外部值。赞成:简单。Con:没有封装优势
  2. 使用__get和__set。为每个源设置外部值。专业:遵循OOP大会。Con:打开所有外部访问;同样,没有封装。
  3. 声明属性为受保护的。对于我需要使用的每个源系统,扩展原始类并在子类中设置属性。Pro:封装OOP。Con:更多的类和潜在的文件需要管理。

目前,选项3似乎是最好的,尽管文件开销。我也对其他想法持开放态度。

我为这个问题读到的参考资料:

http://typicalprogrammer.com/?p=23

Getter and Setter?

http://www.php.net/manual/en/language.oop5.overloading.php

Independent getter/setter methods, or combined?

http://martinfowler.com/bliki/GetterEradicator.html

Is it worth making get and set methods in OOP?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-30 18:53:59

至少还有一个选项:将这些参数注入构造中的对象,并通过getter使它们成为只读的“属性”。只有通过工厂才能构造对象(您也可以强制执行,但我不确定这样做是否有任何实际的好处)。

工厂可以在启动时配置(这可能是一个加号),只有一个类型的传输,并且使用者只能以它选择的方式查看每个传输的状态(封装)。

票数 5
EN

Stack Overflow用户

发布于 2012-08-30 18:53:10

第三个选择,但实际上你应该让他们私密。(请注意,除了列出的三个选项之外,还有更多的选项,这不一定是最优的,但我没有足够的信息来为您作出决定。)另外两个选项都不适合开发可扩展的OOP应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12203485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档