打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
OpenCart 程序结构与业务逻辑 – 远方博客

OpenCart 是一套比较简单的MVC架构的php开源电子商务程序,完全没有Magento系统那么复杂。当然简单的代价是相应的功能和安全性能上的不足。不过OpenCart 系统中的一些经典设计还是很值得学习的。

OpenCart 首先将前台和后台完全分离开来,后台文件结构在admin/目录下;而前台在catalog/目录,入口文件index.php 在根目录下。各自都有一个可以做不同设置的配置文件config.php,在这里设置一些目录路径常量、数据库信息等。下面以OpenCart前台为例看看文件结构和MVC模式:

Catalog 前台

|

index.php 入口文件

  1. || 载入配置文件config.php
  2. || 检测是否新安装,是则跳转到 install/index.php
  3. || 载入启动类(/system/startup.php)(程序引擎system/engine / 核心类system/library / helper类system/helper)
  4. || 载入应用程序模块类(自动预加载的常用模块类,如customer 和tax 等)

|

启动引擎 Engine

  1. || 引入engine/registry.php 实例化下面的类并设置
  2. || 实例化加载器engine/loader.php,配置类library/config.php,数据库library/db.php 以及library/url.php
  3. || 获取商店Store和商店设置Settings,定义错误类

|

处理请求 request/response

  1. || 实例化library/request.php,library/response.php,library/cache.php, library/sesshion.php
  2. || 语言检测,设置语言类library/language.php
  3. || 其他常用预加载模块类的实例化和引入,如library/document.php,customer,tax等

|

前台控制器 /engine/front.php

  1. || addPreAction1: dispatch之前判断是否处于Maintenance Mode
  2. || addPreAction2: dispatch之前执行SEO url设置 catalog/controller/common/seo_url.php
  3. || request获取route 变量传递给Action,然后由前台控制器的dispatch方法处理该Action。

然后Dispatch 开始引入MVC 架构,整个过程由 Controller 贯穿:

Dispatch

|| Dispatch 请求的Action

Pre_Action

|| 预处理action 作为子 Action

Action

|| 继承自基础控制器类/engine/controller.php的类方法

默认index()方法

|| 通过Load Model(engine/loader.php)和相应的Model通信如catalog/model/catalog/category.php)

Model

|| Model:类方法执行sql语句,从数据库(library/db.php)中查询或操作数据,没有引入pdo等数据库抽象类

Controller:返回结果保存到$this->data[]数组

|| Controller 处理业务逻辑

View:$this->template 指定模板

|| View 负责内容呈现方式和样式。

Controller:$this->render接受$this->data[] 和$this->template

|| 传递回response

Controller:$this-response->setOutput()

|| 最后由response 输出

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
文件加载
系统发生错误
Zend Framework 2.0的Mvc结构及启动流程分析
异常捕获
控制器(Controller)Symfony
微擎模块开发流程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服