ell*_*uty 1 php class
我需要使用PHP开发一个小型CMS,现在我正试图弄清楚结构.
CMS将使用一组函数生成.像数据库函数,缓存,国际化和类似的东西.
我当时想这样做:
使函数非静态方法成为大型"站点"类的一部分; 这样我可以运行该类的多个实例.不确定我是否需要这样做..
或者使用静态方法将函数拆分为单独的类
这里的主要问题是CMS应该能够管理多个小站点,而不仅仅是一个.所以要么我将所有方法都设置为静态并添加"站点切换"功能,要么使它们成为我根据我想要管理的站点实例化的普通对象
哪一个是最好的选择?
Tom*_*m B 10
静态方法通常是不好的做法.他们引入了很多潜在的问题.
1)它们引入了隐藏的依赖关系.任意调用foo :: bar()的代码依赖于foo,并且在没有定义foo的情况下无法运行.使用foo :: bar()的对象将正确构造,但如果未定义foo,则无法使用.
2)静力学是全局的.全局状态非常糟糕,任何事情都可以改变代码,其状态未知.您通过使用静态方法牺牲了通过OOP封装实现的功能和控制.
3)不可能将功能替换为不同的版本
4)它使单元测试变得不可能.
有关更多详细信息和代码示例,请参阅本文和本文
归档时间:
13 年,9 月 前
查看次数:
316 次
最近记录:
13 年,4 月 前