今日,知名互联网产品与服务提供商phpwind正式推出通用的php开源技术框架‘windframework’。基于phpwind多年专注php开发积累沉淀下来的技术和解决方案,windframework将为未来推出的phpwind下一代社区产品提供统一的应用开发架构服务。而作为一款通用型的框架,windframework也将为开发者提供更为简单、安全、扩展性良好的应用开发支持。
phpwind旗下社区建站通用型程序phpwind,作为一款广受站长欢迎的产品,在国内拥有广泛的社区网站用户,而通过此次底层开发框架的统一和重构,将能为广大开发者提供轻盈,简洁的开发框架,同时提供给基于此框架开发产品以庞大的用户基础。
什么是windframework?
windframework是一个轻量级的php开源框架,以组件工厂为核心,提供了像MVC、数据持久化、视图模板引擎等应用技术。此外windframework采取了一种组件化的开发模式。虽然目前的组件库还不算丰富健壮,但是基于这种开发模式,使组件的扩展变得非常的容易。windframework拥有一个强健的内核,它实现了基于配置的Ioc控制反转技术。开发者只需要简单的配置,就可以实现类的依赖注入,实现了类与类的完全松耦合。
Windframework由phpwind社区开发团队自主研发,2010年10月份开始投入,目前为止已经内部发行了四个版 本。它源自phpwind社区产品的一次名为‘鹊桥’的重构计划。意在重新定义phpwind的架构分层以及开发模式,使其看起来更清晰,更易于扩展和二次开发。
据项目负责人吴琼介绍,项目最开始对windframework 的定位和设想是希望提炼phpwind社区产品的底层实现并对其进行统一化部署;也是对phpwind产品中多年积累沉淀下来的技术和解决方案进行整理重构,使其成为通用的标准化的工具/组件库。后来windframework逐渐的发展成为了一个通用型的php框架,一个独立的框架产品。它的定位和职责也越来越清晰:支撑了整个phpwind社区应用的运行,为它定义了统一规范的MVC流程,并提供强大的路由和视图渲染能力,灵活的应用部署方案等。windframework服务于phpwind社区产品,但也独立于phpwind社区产品。
windfrmaework的特点
作为一个通用的php框架,windframework在公司内部已经发行至第四版并推广使用,此次正式对外发布的版本,已经有了多项的优化和BUG修复。有很多新的项目基于windframework框架进行开发,包括即将推出的phpwind最新社区版本和社区电子商务平台,都基于windframework框架基础。在这个框架基础上,开发者进行二次开发和模板制作,将会更便捷和快速,而通过应用中心phpwind将为开发者提供更丰富更实用的应用、模板库。
Model-View-Controller(MVC)
wind框架提供了基础的web mvc支持(参看组件包wind/web/)。wind mvc 基于框架核心技术,提供了一种清晰的、松耦合的实现。它采用前端控制器模式,并支持强大的拦截过滤器链策略。使完全松耦合的方式集中化控制逻辑变的简单。除此以外,wind mvc 还提供了像‘模板驱动’、‘请求重定向’等特性。
目录路径别名与import类加载
wind框架可以将目录路径注册到系统中,并为其定义使用别名。wind框架通过import方法加载类(只支持类加载),并提供autoload支持。通过路径别名与import机制简化了路径使用、工程部署,即用即加载的模式大大提高了类加载的效率。
组件工厂机制
组件工厂机制是wind框架核心的基础。它基于Ioc控制反转和依赖注入的技术实现,为整个框架提供了松耦合的组件管理机制,从程序逻辑中分离出类的依赖关系和配置。组件工厂机制提供了丰富的特性支持:组件(创建、注销、获取)管理、多生命周期、配置解析管理、代理模式、lazy-init延迟加载等。通过组件工厂机制统一并简化了组件的开发与使用。
视图管理,多模板引擎支持
在wind框架强大的组件机制的基础上,视图管理提供了多模板引擎的支持。wind viewer组件包提供了'WindNormalViewerResolver'、'WindViewerResolver'两个视图渲染引擎。同时也支持第三方渲染引擎例如‘smarty’等。框架默认采用'WindViewerResolver'进行视图渲染,该视图渲染器支持模板编译和标签扩展。
主题与皮肤(themes)
wind框架中支持简单的主题与皮肤管理,通过为视图设置主题,应用可以轻松的实现多风格的支持与切换。
模板视图的布局管理(layout)
布局管理是通过为应用定义布局模板文件,来实现可以模板的统一布局。 wind框架支持为整个应用定义一种布局模板,也支持为每个操作定义不同的布局模板。默认情况系统不开启布局管理的,可以通过设置布局文件开启布局管理。
模板标签支持
wind框架默认采用了‘WindViewerResolver’视图渲染器,这个视图渲染器支持模板编译以及基于配置的自定义标签扩展。开发者可以根据需求,自定义模板标签。wind框架默认实现了几种常用标签:action、echo、lang、template、token等。
数据输出安全过滤及数据格式化支持
基于模板标签体系,wind框架实现了强大的数据输出支持:安全输出过滤、数据格式化等。基于这个特性,开发者可以方便的在页面以想要的格式进行变量输出,而无需担心安全问题以及数据格式化问题。
Cache
wind框架默认提供了cache组件和cache支持。cache组件采用了面向接口的组件设计思路,为cache使用者提供标准的cache接口定义,以及多种cache方案的实现。
DB
简单高效的数据持久层方案‘WindConnection’,这是一个基于PDO的数据持久化解决方案。它支持‘WindConnection’简单链接、‘WindConnectionManager’分布式链接管理两种链接模式。两种方案可以实现无缝的切换。
请求的预处理与后处理(filter chain)
wind框架采用了拦截过滤器模式,对请求的预处理和后处理进行了拦截和策略部署支持。开发者可以基于配置很方便的使用该特性在请求的预处理或后处理位置添加、删除、修改控制逻辑代码。
路由协议链,多路由协议支持
路由是wind mvc模式中的重要组件,wind框架提供了路由支持,它采用过滤链的模式来实现,一个路由器可以挂载多种路由协议。程序会根据挂载的顺序,依次去加载路由协议,直到找到可以处理当前请求的路由协议。
Form表单对象&验证
web mvc 默认提供了对表单处理的支持。开发者可以为一次请求创建一个表单对象,系统将会在处理具体的操作前初始化这个表单对象以及完成表单验证等工作。开发者无需在代码逻辑里面操作大量的表单数据的赋值验证,简化了开发。
ErrorHandler自定义错误处理句柄
自定义错误句柄是web mvc提供的又一个特性支持。wind框架默认为mvc提供了错误处理句柄‘WindErrorHandler’,默认的错误页面指向‘web/view’。开发者可以通过应用配置来指向自定义的错误处理句柄,可以为每一个module定义‘ErrorHandler’,也可以为每一个action自定义‘ErrorHandler’。wind框架在自定义配置上提供了强大且灵活的支持。
异常体系与Logger日志
两种基本的异常类型:‘WindFinalException’、‘WindException’。前者是终极异常,抛出该类异常表示不希望异常被系统处理而直接抛出;后者是通用异常类型,大部分自定义异常都需要继承该异常类型,该异常会被系统的错误体系处理。Logger组件,通过调用Logger组件开发者可以很方便的输出log信息,支持分类、分组输出。目前只支持本地化的文件log记录。
多种开发模式支持WIND_DEBUG
WIND_DEBUG支持多种模式:window、log、window&log。开发者可以通过设置‘WIND_DEBUG’这个常量的值定义wind的工作模式。