A PHP MVC Framework
- 我们一开始基于Zen Cart这个开源网店系统建立了一个B2C网站。这是系统大部分是相对古老、面向过程、执行效率很差的代码。
- 随着访问量的快速增加,我们开始为它增加了一个灵活Cache模块,封装了File、Apc、Memcached的实现;
- 随着线上各种故障的出现,我们开始为它增加Log和Monitor模块,可以灵活的、直观的记录各种日志,可以实现代码错误的监控报警;
- 随着我们开始做集群和分布式,我们独立了Session Server,放到Memcached里去,并做了容错和高可用的考虑;
- 随着网站业务的不断增加和改变,维护一个面向过程、全局变量、全局函数、SQL到处都是的代码,开始让我们痛苦不堪。于是我们逐步的重构Zart Cart的代码。我们按照SOA的思路,把业务逻辑层首先封装出来,封装了一些业务Service。等到我们拥有的完善的模型层,我们开始逐步重构控制器和视图的代码,而且之前封装的Cache、Log、Monitor、Session等组件,也有必要在其它系统中重用。于是我们写了一个MVC框架,整合了之前的各个组件,并简写为Zc。
- 按照指定的位置放好代码,放弃了一些灵活性,只保留最佳实践,又在需要灵活的地方,保留定制接口。
- 只保留一个route参数,来路由语言包、控制器、模板。
- 尽量让应用不依赖于框架,减少框架侵入。
- Layout可以具有层次结构和优先级;
- 任意页面都可以定制、开关Layout;
- 非常容易使用。
- 既可以有全局语言包,又可以有模块语言包,甚至是页面语言包
- 当然,你也可以只用其中任何几种
- Filter和Forward是J2EE Servlet规范
- Zc框架提供了非常简洁、直观的使用方式
- 内置File、DB、Memcached的Session管理
- Memcached的Session管理,实现了双机互备高可用;
- 很多PHP程序员都没有记Log的习惯。Zc框架提供了Log组件,让你随时随地都可以记Log
- Monitor组件,能自动把各种异常、错误都记录下来,并提供定制的接口,在实践中已经避免非常多的线上故障;
- 内置File、DB、Apc、Memcached的Cache管理
- 一切文件按需加载,没用到的,就不加载
- 没有全局函数,没有全局变量、每个组件都可以独立使用
- ThinkPHP, 吸取了ThinkPHP的几个著名大写单字母方法。包括W、C、L方法,分别用于加载Widget、配置、语言。但是都作为静态方法提供,并且只保留给应用需要用的方法,决不把侵入性的方法暴漏给应用。
- Yii, 吸取了Yii框架的自动加载的思路。
- WebX, 这是Alibaba的基于Java的MVC框架,吸取了它的Layout、Screen、Control的视图层机制;
- Log4J,随时随地记Log
- CI,最喜欢它的就是它的简单,最不喜欢的它的,就是提供了太多的自由度。我保留下了它的简单。
- 没有全局变量、没有全局函数、完全的面向对象、非常轻量。