PHP类封装选项

Pau*_* S. 2 php oop

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

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

对于具有无限扩展潜力的长期项目,以下哪项最佳?

  1. 声明为公共属性.在构造类时为每个源设置外部值.亲:简单.Con:没有封装优势

  2. 使用__get和__set.为每个源设置外部值.Pro:遵循OOP惯例.Con:打开所有外部访问; 再次,没有封装

  3. 将属性声明为受保护.对于我需要使用的每个源系统,扩展原始类并在子类中设置属性.Pro:带封装的OOP.Con:要管理的更多类和可能的文件.

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

我读过这个问题的参考文献:

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

Getter和Setter?

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

独立的getter/setter方法,还是组合?

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

是否值得在OOP中获取和设置方法?

Jon*_*Jon 5

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

工厂可以在启动时配置(可能是一个加号),只有一类传输,而消费者只能以它选择公开它的方式查看每个传输的状态(封装).

  • +1有助于您将大量的面向对象和可测试性知识提炼成一个简明的答案,即曝光率有限的人会理解......我太懒了:) (2认同)