朋友有一个教学B2C商城的需求,看了下bzfshop的开源文档,还是很齐全的。适合做二次开发。

棒主妇开源(www.bzfshop.net) 是 棒主妇商城(www.bangzhufu.com) 的开源项目。我们希望提供一个设计严谨、性能优异、完全免费开源的 B2C 商城给大家使用,方便每一个人可以很容易的搭建属于自己的 B2C 商城。 http://www.bzfshop.net/article/239.html

棒主妇开源商城—开发手册: http://doc.bzfshop.net/dev-manual/index.html

bzfshop技术框架:

  • F3: Fat Free Framework 是一个 PHP 框架,我们用它实现了 路由、缓存、数据库访问,了解 F3 框架是读懂 bzfshop 的第一步。我们使用 F3 框架最主要的原因就是它够小、够轻、够用。

  • Smarty: PHP 著名的模版引擎,关于 PHP 是否有必要用模版还有很多的争论。我们用 Smarty 看重的不是它的模版,而是它的页面缓存机制。Smarty 有良好的页面缓存机制,方便我们对真个页面做全面的缓存或者静态化从而能大大提供整个系统的性能。

bzfshop新增加功能:

  • 增加自己的 Controller
  • 安全性考虑,用户输入的过滤
  • 调用 Core 里面的 Service 取得商品数据
  • 直接的数据库操作
  • 取得用户的登陆信息
  • 返回出错信息给用户

为 bzfshop 添加一个功能有以下几步:

  • 根据 namespace 和目录对应原则,添加一个 Controller
  • 确定 Controller 的输入参数,对参数使用 Validator 做规则验证
  • 调用 Core 中的核心业务逻辑实现数据的查询和操纵
  • 结果赋值给 Smarty 并且用 Smarty 渲染模板生成最终显示页面

这是一个功能的基本实现,bzfshop 本身就是一个程序框架,这个框架为你实现了很多通用的功能逻辑(参数验证、业务逻辑封装、出错信息的显示)。直接修改 bzfshop 的代码是一个最简单最快速的方法,但是这也是一个 后遗症 最严重的方法。如果你修改了 bzfshop 本身的代码,那么下次 bzfshop 升级的时候,你将不得不 自己合并代码,每次升级你就要自己合并一次,这其中的痛苦相信做过这事的人都会深有体会。

为了不影响 bzfshop 的升级,你不应该修改 bzfshop 自身的任何代码。既然不修改 bzfshop 的代码,那如何实现 “加入” 自己自定义功能呢?后面介绍的 “插件” 开发就是你应该采用的方法,bzfshop 的插件机制设计得非常强大,几乎到了无限制的程度,你可以通过插件实现任何功能,甚至替换系统的任何现有功能而不需要修改系统任何代码。具体如何开发 “插件” 请往后看。

bzfshop调用逻辑:

从上面的调用图我们可以看到

程序入口为 index.php ,用户发出 http 请求一律先到 index.php index.php 调用 protected/bootstrap.php 完成系统环境各种框架的初始化 index.php 对当前工程做设置,包括 设置环境、加载主题、加载插件 通过 $f3→run(); 启动程序,调用 Theme/Shop 下对应的 Controller 执行真正的操作 Controller 调用 protected/Core 里面的各种服务完成数据查询操作 index.php 卸载主题、插件(注意:这里不是说删除,而是类似于 __destruct 一样的 析构函数 操作) 运行结果返回给用户并且在浏览器显示

简单的总结一下: protected/bootstrap.php 负责框架整体的初始化 index.php 是唯一入口,负责初始化整个工程,并且加载主题、插件 Theme/Shop 的 Controller 里面才是真正的业务逻辑实现代码 protected/Core 提供了 bzfshop 的基础数据查询服 [提示] protected/Core 下面的各种服务将会是你做二次开发使用的最多的东西。