我需要使用 PHP 开发一个小型 CMS,现在我正在尝试弄清楚其结构。
CMS 将使用一组函数生成。诸如数据库功能、缓存、国际化之类的东西。
我想这样做:
这里的主要问题是 CMS 应该能够管理多个小型站点,而不仅仅是一个。因此,我要么使所有方法静态并添加“站点切换”功能,要么使它们成为我根据要管理的站点实例化的普通对象
其中哪一个是最好的选择?
静态方法通常是不好的做法。他们引入了很多潜在的问题。
1)它们引入了隐藏的依赖关系。任意调用 foo::bar() 的代码依赖于 foo,并且在未定义 foo 的情况下无法运行。使用 foo::bar() 的对象将正确构造,但如果未定义 foo 将无法使用。
2)静态是全局的。全局状态非常糟糕,任何东西都可以改变代码并且其状态是未知的。通过使用静态方法,您牺牲了 OOP 封装所实现的功能和控制。
3)不同版本的功能无法替代
4)它使得单元测试变得不可能。
有关更详细的信息和代码示例,请参阅本文 http://r.je/static-methods-bad-practice.html and 本文 http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)