我为什么要写xts

在我写xts之前,做PHP开发一般会用两种方式: 1. 使用原生PHP函数和类库开发 2. 使用Yii框架开发

这两种方式各有各的好。原生函数和类一般在开发小项目时使用,可以飞快地上手开发,开发速度一般,运行效率非常高;使用Yii这种成熟的开发框架,大量的工作都不再需要自己进行,但Yii框架的程序复杂臃肿,运行效率不高。每次用了一段时间的Yii框架之后,再换回原生PHP,总觉得少了些什么,各种东西都要自己编写管理,感觉非常不方便。但是对于我经常做的十几到二十几个页面的小型项目来说,Yii框架太复杂了,实际只使用了Yii框架不到5%的代码,但是每次运行都要各种初始化,处理各种分支。

我希望有一个简单一些的开发框架,牺牲一些灵活性,保留框架开发中舒服的部分,于是我尝试了redbean。这是一个ORM库,可实际用过之后感觉它的性能一般,与我的开发理念完全不合。在对比了ThinkPHP、CI之后,决定还是自己写一个。

在我看来,一个微型的PHP框架里应该包括三样不可缺少的东西: * 路由器。路由器实现了单入口支持,这样更容易控制程序先完成一些公共的任务,比如载入配置,建立数据库连接等等。 * DB和ORM。个人很喜欢ORM的方便,但有时直接操作SQL的确更为简单。 * 配置分离。同时支持debug和release模式的不同配置,可以根据DEBUG状态访问不同的数据库等等。

另外四样功能视情况,有时会很方便: * Cache。虽然只是get/set/del操作,但是如果能包一层屏蔽掉apc、memcache、redis等等的差异还是很不错的选择。 * 模板引擎。很多人认为PHP本身就是模板引擎,这一点我也同意,不过我不喜欢在html代码中写if(is_array($itemList)) foreach($itemList as $item):这种代码,还是直接用模板引擎帮我把{foreach}翻译一下好了。 * 表单验证器。虽然isset、empty、is_numeric等等PHP函数已经能提供验证,不过感觉写着还是很不方便,如果能有一种定义式语法完成表单验证会更舒服。 * 日志功能。日志也是一个开发过程中很重要的方面,如果框架提供日志功能,总会比自己fopen来得方便。

总的来说,框架也是一种软件复用的方式,xts就是想提供一个尽可能小的轻量级工具,再平衡一下开发工作量和运行效率的天平。