从去年phpcms开发第一个版本的时候开始,我一直都希望phpcms有一个好的架构,让更多的人能够以模块开发的方式参与phpcms的开发。当时我也做过努力和尝试,没有成功,因此就出了phpcms 2.x这样的版本。 一直以来我都没有放弃过这种想法,因为如果不实现这个,多人之间的分工与合作就难上加难,更不要谈异地开发,也不用谈丰富的插件了。如果真这样的话,那么phpcms岂不是真的成了封闭开发了?这种模式的结果会导致phpcms发展速度会越来越慢。
在3.0架构出来之前,我也曾参考过很多cms的架构,但是都没有满意的。国外的那些虽然可以模块化开发,但是对模板以及生成html都支持的非常差;而国内的cms很难谈的上是模块化开发了,基本上都是处于封闭开发的状态。phpcms要后来居上,首先我们必须在思想上战胜竞争对手,只有这样我们才有取胜的机会。一个好的架构将决定phpcms的未来!我认为好的架构应该是给一个开发手册和示例,那么其他会php编程的人都能够参与模块开发,而用户只需要最简单的设置就可以安装和卸载模块;能降低模块开发者的开发难度,能够缩短模块的开发周期,能够提高系统性能,能够加强系统的安全性。
基于这些基本原则,我们设计了phpcms 3.0架构。
在模块开发方面
我们提供了统一的标准,模块的所有文件都必须在同一个目录下,这样可以降低模块的安装和卸载难度,可以避免多个模块之间的干扰。用户安装的时候只要给定模块的目录位置即可进行模块的安装,卸载的时候一个点击即可完成模块的卸载。我们提供了常用的类库和函数库,可供模块开发者自由调用。我们提供了完善的会员管理、权限管理、栏目管理、专题管理、评论管理等很多基础性的模块,那么开发者实际上要做的工作非常少,仅仅局限于他的本职功能而无需操心别的事情。例如负责文章模块开发的人,他实际上只要做好文章添加、审核、修改、删除、显示等基础功能就可以了,其他的都共享他人的模块了。这样就可以避免重复劳动,提高开发效率。基于phpcms开发模块只需要一天时间,而如果完全独立开发,则可能需要20天的时间,开发周期上就是这样的对比!其实phpcms 3.0是从3月初着手开发的,我们只用了2个月的时间开发出了如此多的功能,这个完全得益于我们先进的架构。如果一个模块需要被其他模块调用,那么该模块应该提供一个调用接口(比如类、函数或url参数),而不是去修改别人的程序。
在程序效率方面
phpcms 3.0大量采用cache技术,对网站配置信息、模块信息、频道信息、栏目信息、会员组信息、模板等最常用的而不是经常变化的信息做了缓冲,在前台对这些信息进行调用的时候无需进行数据库查询。另外我们创造了 sql cache技术,可以对任何sql查询结果进行缓冲,也就是说我们可以对任何信息进行缓冲,完全自由控制!另外为了保证效率和消耗更少的资源,phpcms会根据当前请求页面加载对应的cache,而不是默认全部都加载的。当你进入一个动态的文章栏目的时候,可能一个查询都不需要,或者只要对member表和article表进行查询。因此无论phpcms是否生成html,他都会以最快的速度响应访问者的请求。这种速度是其他绝大多数系统难以比拟的。
在安全方面
phpcms对用户信息进行了安全加密,该加密必须有密钥才能破解,可以说是破解不了。因此即使用户的cookie信息被他人盗取,也无法破解并伪造cookie了。phpcms提供了一个完善的权限管理方案,模块开发者只需要简单的调用即可实现权限控制。为了操作方便,phpcms前台的留言和投稿都采用了编辑器,这个可能会带来跨站攻击的安全隐患。如果跨站攻击成功则可以盗取用户的cookie信息或者给用户机器装上木马,phpcms的cookie信息是经过安全加密的,盗取也没有用,但是如果给网站编辑或者浏览者挂木马麻烦就大了。因此我们针对跨站攻击做了众多的代码过滤,大家可以测试一下次功能看有没有什么需要补充的。我们仔细研究过,其实很多站采用ubb代码也是不安全的,同样存在跨站攻击的隐患,很多web程序的漏洞都出在跨站攻击方面。
总之,phpcms 3.0架构是一个安全、高效、开放的系统架构,phpcms不仅是一个cms程序,也是一个php开发平台。我们在3.0发布后会提供一个完整的phpcms模块开发手册、建立模块开发和买卖站点,我们欢迎广大的phper加入phpcms开发者的阵营,而无论你在什么地方。
在3.0架构出来之前,我也曾参考过很多cms的架构,但是都没有满意的。国外的那些虽然可以模块化开发,但是对模板以及生成html都支持的非常差;而国内的cms很难谈的上是模块化开发了,基本上都是处于封闭开发的状态。phpcms要后来居上,首先我们必须在思想上战胜竞争对手,只有这样我们才有取胜的机会。一个好的架构将决定phpcms的未来!我认为好的架构应该是给一个开发手册和示例,那么其他会php编程的人都能够参与模块开发,而用户只需要最简单的设置就可以安装和卸载模块;能降低模块开发者的开发难度,能够缩短模块的开发周期,能够提高系统性能,能够加强系统的安全性。
基于这些基本原则,我们设计了phpcms 3.0架构。
在模块开发方面
我们提供了统一的标准,模块的所有文件都必须在同一个目录下,这样可以降低模块的安装和卸载难度,可以避免多个模块之间的干扰。用户安装的时候只要给定模块的目录位置即可进行模块的安装,卸载的时候一个点击即可完成模块的卸载。我们提供了常用的类库和函数库,可供模块开发者自由调用。我们提供了完善的会员管理、权限管理、栏目管理、专题管理、评论管理等很多基础性的模块,那么开发者实际上要做的工作非常少,仅仅局限于他的本职功能而无需操心别的事情。例如负责文章模块开发的人,他实际上只要做好文章添加、审核、修改、删除、显示等基础功能就可以了,其他的都共享他人的模块了。这样就可以避免重复劳动,提高开发效率。基于phpcms开发模块只需要一天时间,而如果完全独立开发,则可能需要20天的时间,开发周期上就是这样的对比!其实phpcms 3.0是从3月初着手开发的,我们只用了2个月的时间开发出了如此多的功能,这个完全得益于我们先进的架构。如果一个模块需要被其他模块调用,那么该模块应该提供一个调用接口(比如类、函数或url参数),而不是去修改别人的程序。
在程序效率方面
phpcms 3.0大量采用cache技术,对网站配置信息、模块信息、频道信息、栏目信息、会员组信息、模板等最常用的而不是经常变化的信息做了缓冲,在前台对这些信息进行调用的时候无需进行数据库查询。另外我们创造了 sql cache技术,可以对任何sql查询结果进行缓冲,也就是说我们可以对任何信息进行缓冲,完全自由控制!另外为了保证效率和消耗更少的资源,phpcms会根据当前请求页面加载对应的cache,而不是默认全部都加载的。当你进入一个动态的文章栏目的时候,可能一个查询都不需要,或者只要对member表和article表进行查询。因此无论phpcms是否生成html,他都会以最快的速度响应访问者的请求。这种速度是其他绝大多数系统难以比拟的。
在安全方面
phpcms对用户信息进行了安全加密,该加密必须有密钥才能破解,可以说是破解不了。因此即使用户的cookie信息被他人盗取,也无法破解并伪造cookie了。phpcms提供了一个完善的权限管理方案,模块开发者只需要简单的调用即可实现权限控制。为了操作方便,phpcms前台的留言和投稿都采用了编辑器,这个可能会带来跨站攻击的安全隐患。如果跨站攻击成功则可以盗取用户的cookie信息或者给用户机器装上木马,phpcms的cookie信息是经过安全加密的,盗取也没有用,但是如果给网站编辑或者浏览者挂木马麻烦就大了。因此我们针对跨站攻击做了众多的代码过滤,大家可以测试一下次功能看有没有什么需要补充的。我们仔细研究过,其实很多站采用ubb代码也是不安全的,同样存在跨站攻击的隐患,很多web程序的漏洞都出在跨站攻击方面。
总之,phpcms 3.0架构是一个安全、高效、开放的系统架构,phpcms不仅是一个cms程序,也是一个php开发平台。我们在3.0发布后会提供一个完整的phpcms模块开发手册、建立模块开发和买卖站点,我们欢迎广大的phper加入phpcms开发者的阵营,而无论你在什么地方。