【发布时间】:2012-08-31 02:53:59
【问题描述】:
在最近的阅读中,我看到有关封装方法和 OOP 最佳实践的相互矛盾的建议。
我正在开始开发一系列 PHP 类,这些类将用于将数据从多个源系统传输和转换到最终目的地。因此,第一类的属性是包含源 URL 和身份验证值。
以下哪项最适合具有无限扩展潜力的长期项目?
声明为公共属性。构建类时为每个源在外部设置值。优点:简单。缺点:没有封装优势
使用 __get 和 __set。在外部为每个源设置值。优点:遵循 OOP 约定。缺点:对外部访问全部开放;再次,没有封装
将属性声明为受保护。对于我需要使用的每个源系统,扩展原始类并在子类中设置属性。 Pro:OOP 封装。缺点:需要管理更多类和潜在文件。
目前,选项 3 似乎是最好的,尽管文件开销很大。我也愿意接受其他想法。
我为这个问题阅读的参考资料:
http://typicalprogrammer.com/?p=23
http://www.php.net/manual/en/language.oop5.overloading.php
Independent getter/setter methods, or combined?
【问题讨论】:
-
3 ...另外两个选择是垃圾。
-
请记住,继承会破坏封装,因此您应该尽可能使用组合。