题外话,

像我这样从小到大作文打0分居多的人,写文章,实在是没有耐心的,抱歉。

尽管自己也山寨过许多PHP框架,但被山寨的对象中,最喜欢的是WindFramework.

Yii其实更好,但太大而全。

WindFramework是一个轻量级的php开源框架,以组件工厂为核心,提供了像MVC、数据持久化、视图模板引擎等应用技术。

它的前端控制器,概念比较复杂。

Model-View-Controller(MVC)

wind框架提供了基础的web mvc支持(参看组件包wind/web/)。

wind mvc 基于框架核心技术,提供了一种清晰的、松耦合的实现。它采用前端控制器模式,并支持强大的拦截过滤器链策略。使完全松耦合的方式集中化控制逻辑变的简单。除此以外,wind mvc 还提供了像‘模板驱动’、‘请求重定向’等特性。

目录路径别名与import类加载

我们可以将目录路径注册到系统中,并为其定义使用别名。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_DEBUGWIND_DEBUG支持多种模式:window、log、window&log。开发者可以通过设置‘WIND_DEBUG’这个常量的值定义wind的工作模式。

国际化(i18n)

简单的国际化支持:变量、语言模板等。

安全(security)

输入输出安全过滤,通过内置在相应的组件管理中,透明化了对数据安全的处理。wind框架还提供了security安全工具包例如:加密、解密、token等。

PHP框架中最喜欢的WindFramework的更多相关文章

  1. 换个新的思路 代替解压jar包 例证:wechat4j 框架中的templateMsg类

    很多朋友在写java的程序的时候都喜欢用第三方的jar包和框架,有可能遇到jar包中的内容已经跟不上官方开发者文档的更新,导致部分内容出错了,这个时候可能就要放弃这个jar的使用,但是这个jar中的其 ...

  2. ENode 1.0 - 事件驱动架构(EDA)思想的在框架中如何体现

    开源地址:https://github.com/tangxuehua/enode 上一篇文章,我给大家分享了我的一个基于DDD以及EDA架构的框架enode,但是只是介绍了一个大概.接下来我准备用很多 ...

  3. Yii框架中使用PHPExcel导出Excel文件

    最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config\main.php中添加对PHPExcel的引用,我的方式是这样: 1 2 3 4 ...

  4. 【JavaScript】对比12 款优秀的JavaScript MVC/MVVC框架 你最喜欢Backbone or Ember

    http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/ 目前基本所以后台程序都是面向对象MVC模式开发, ...

  5. enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现

    enode框架step by step之事件驱动架构(EDA)思想的在框架中如何体现 上一篇文章,我给大家分享了我的一个基于DDD以及EDA架构的框架enode,但是只是介绍了一个大概.接下来我准备用 ...

  6. Unity C# 多态 委托 事件 匿名委托 Lambda表达式 观察者模式 .NET 框架中的委托和事件

    一.多态 里氏替换原则: 任何能用基类的地方,可以用子类代替,反过来不行.子类能够在基类的基础上增加新的行为.面向对象设计的基本原则之一. 开放封闭原则: 对扩展开放,意味着有新的需求或变化时,可以对 ...

  7. Laravel框架中的make方法详解

    为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...

  8. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  9. Spring5源码解析-Spring框架中的单例和原型bean

    Spring5源码解析-Spring框架中的单例和原型bean 最近一直有问我单例和原型bean的一些原理性问题,这里就开一篇来说说的 通过Spring中的依赖注入极大方便了我们的开发.在xml通过& ...

随机推荐

  1. 没有公网IP的服务器如何通过有公网的服务器实现远程管理的功能?即VPN服务器搭建过程

    由于很多PPPoE帐号都没有公网IP了,那我们如何实现远程管理呢? 答案是比较简单的,首先,你要拥有一台有公网IP的路由器,其他品牌的也可以,但是下面我以WayOs作为VPN服务器,给大家一个教程. ...

  2. 移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)

    1.认证和授权 概述 认证是用来证明用户身份合法性的过程,授权是用来证明用户可以合法地做哪些事的过程,这两个过程一般是在服务器端执行的,但也有的APP出于性能提升或用户体验等原因,将其做在客户端完成, ...

  3. Haproxy配置支持https获取用户IP地址

    global log 127.0.0.1 local0 chroot /var/lib/haproxy #chroot运行路径 pidfile /var/run/haproxy.pid #haprox ...

  4. centos中 mysql 5.7安装

    以免授权模式启动 编辑 /etc/my.cnf,添加以下内容: linux环境中:vi /etc/my.cnf 在[MySQL(和PHP搭配之最佳组合)d]配置段添加如下两行: user=mysql ...

  5. Cocos2dx 把 glview 渲染到 Qt 控件上(Mac 环境)

    本文原链接:http://www.cnblogs.com/zouzf/p/4423256.html 环境:Mac 10.9.2   Xcode5.1.1  Qt5.3  cocos2dx-2.2.4 ...

  6. Selenium关键字驱动测试框架Demo(Java版)

    Selenium关键字驱动测试框架Demo(Java版)http://www.docin.com/p-803493675.html

  7. 基于HTML5的Web跨设备超声波通信方案

    前言:Chirp在iPhone上掀起了有声传输文件的序幕,我们再也不需要彩信.蓝牙配对.IM来传送数据.它通过“叽叽喳喳”的小鸟叫声来分享数据,简单有趣,而且可以快速的实现一对多的分享. 此外支付宝曾 ...

  8. jsp页面间传递参数 中文乱码问题(zz)

      jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...

  9. 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  10. Ext.grid.GridPanel属性及方法等

    1.Ext.grid.GridPanel主要配置项:store:表格的数据集columns:表格列模式的配置数组,可自动创建ColumnModel列模式autoExpandColumn:自动充满表格未 ...