Skip to content

gaojing007/zc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

Zc Framework

A PHP MVC Framework

1. 为什么叫Zc框架?

  • 我们一开始基于Zen Cart这个开源网店系统建立了一个B2C网站。这是系统大部分是相对古老、面向过程、执行效率很差的代码。
  • 随着访问量的快速增加,我们开始为它增加了一个灵活Cache模块,封装了File、Apc、Memcached的实现;
  • 随着线上各种故障的出现,我们开始为它增加Log和Monitor模块,可以灵活的、直观的记录各种日志,可以实现代码错误的监控报警;
  • 随着我们开始做集群和分布式,我们独立了Session Server,放到Memcached里去,并做了容错和高可用的考虑;
  • 随着网站业务的不断增加和改变,维护一个面向过程、全局变量、全局函数、SQL到处都是的代码,开始让我们痛苦不堪。于是我们逐步的重构Zart Cart的代码。我们按照SOA的思路,把业务逻辑层首先封装出来,封装了一些业务Service。等到我们拥有的完善的模型层,我们开始逐步重构控制器和视图的代码,而且之前封装的Cache、Log、Monitor、Session等组件,也有必要在其它系统中重用。于是我们写了一个MVC框架,整合了之前的各个组件,并简写为Zc。

2. Zc具有哪些功能?

约定优于配置

  • 按照指定的位置放好代码,放弃了一些灵活性,只保留最佳实践,又在需要灵活的地方,保留定制接口。
  • 只保留一个route参数,来路由语言包、控制器、模板。
  • 尽量让应用不依赖于框架,减少框架侵入。

Layout布局

  • Layout可以具有层次结构和优先级;
  • 任意页面都可以定制、开关Layout;

Widget组件重用

  • 非常容易使用。

多语言原生支持

  • 既可以有全局语言包,又可以有模块语言包,甚至是页面语言包
  • 当然,你也可以只用其中任何几种

Filter、Forward功能

  • Filter和Forward是J2EE Servlet规范
  • Zc框架提供了非常简洁、直观的使用方式

Session管理

  • 内置File、DB、Memcached的Session管理
  • Memcached的Session管理,实现了双机互备高可用;

Log和Monitor组件

  • 很多PHP程序员都没有记Log的习惯。Zc框架提供了Log组件,让你随时随地都可以记Log
  • Monitor组件,能自动把各种异常、错误都记录下来,并提供定制的接口,在实践中已经避免非常多的线上故障;

Cache组件

  • 内置File、DB、Apc、Memcached的Cache管理

框架自动加载、应用自动加载

  • 一切文件按需加载,没用到的,就不加载

简洁、直观、抛弃一切复杂

  • 没有全局函数,没有全局变量、每个组件都可以独立使用

3. Zc与其它框架的比较

  • ThinkPHP, 吸取了ThinkPHP的几个著名大写单字母方法。包括W、C、L方法,分别用于加载Widget、配置、语言。但是都作为静态方法提供,并且只保留给应用需要用的方法,决不把侵入性的方法暴漏给应用。
  • Yii, 吸取了Yii框架的自动加载的思路。
  • WebX, 这是Alibaba的基于Java的MVC框架,吸取了它的Layout、Screen、Control的视图层机制;
  • Log4J,随时随地记Log
  • CI,最喜欢它的就是它的简单,最不喜欢的它的,就是提供了太多的自由度。我保留下了它的简单。
  • 没有全局变量、没有全局函数、完全的面向对象、非常轻量。

About

A PHP MVC Framework

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%