`
hulunberbus
  • 浏览: 865655 次
文章分类
社区版块
存档分类
最新评论

OpenCart: 架构概览

 
阅读更多

OpenCart是一个代码设计精致小巧的电子商务系统。

1、MVC架构:

OpenCart是基于MVC范式的。

model层负责获取数据。和其他一些框架如CakePHP相比,model的功能实现有限但简洁,直接调用DB类实现数据CRUD操作。

(CakePHP的模型层支持基础数据验证,复杂业务逻辑由Controller层处理)。

controller层负责处理请求,从model获取数据,提交给view层模板。

view负责组织展示。


2、“Registry”设计模式

在OP中,Registry是整个系统的信息中枢。

Registry是一个单例(Singleton),在index.php起始页面中,

首先作为构造函数参数传递给所要用到的类创建类实例,并随之将这个类实例设置到这个“注册表”中,

这个注册表就像是一个共享的数据总线一样,把各个模块/数据串联在一起。


3、整体流程

(1)创建Registry对象

(2)注册所有公共类

(3)创建Front类对象,作为请求分发器(Dispatcher)

(4)根据用户请求(url)创建控制器对象及其动作。

在Front类私有函数execute($action)中如下语句

$controller = new $class($this->registry); //创建控制器

(5)控制器加载相应的模型,如

$this->load->model('design/layout');

该语句将创建相应的model对象。

(6)控制器获取模板,绘制(提取数据并启用output buffer)到页面输出区output中

$this->render();

(7)最后Response对象把输出区的数据(页面)echo返回给用户


4、魔术函数(Magic method)

在Controller中调用$this->load->...时,熟悉面向对象语言的开发人员会觉得有点奇怪,因为Controller基类中并没有$load成员变量。

实际上这是由PHP5魔术函数来实现的。__get(), __set()函数在获取/设置非类定义成员变量的时候,会由PHP自动调用。

那么OP中在执行$this->load->...时实际调用的是:

public function __get($key) {
return $this->registry->get($key);
}

现在体会到Registry‘共享总线’的作用了吧。

分享到:
评论

相关推荐

    checkout-opencart:Bambora在线结帐-OpenCart

    Bambora在线结帐-OpenCart支持的OpenCart版本该模块仅在OpenCart 2.3.x和3.0.x上进行了测试支持的支付网关Bambora在线结帐安装说明从以下位置下载最新模块: OpenCart市场: ://... 上载模块完成后,转到Extensions-> ...

    vtweb-opencart:Opencart Veritrans集成库

    官方Veritrans OpenCart(v1.5.xx及更低版本)扩展 Veritrans :red_heart: OpenCart! 这是OpenCart电子商务平台的官方Veritrans扩展。 安装 解压缩vtweb-opencart-master.zip文件。 通过FTP连接找到您商店的根...

    opencart:适用于OpenCart的免费PWA和SPA

    VueFront适用于OpenCart 2.x-3.x的CMS Connect应用程序 显示你的 :red_heart: -给我们一个 :star: 帮助我们将这个项目发展到最好! VueFront是CMS不可知的SPA和PWA前端,适用于您的老式Blog和电子商务网站。 ...

    white-opencart:白色支付的 OpenCart 扩展

    这是用于的 OpenCart 扩展 在 Opencart 2.0.0.0 上测试 安装 在下载最新版本。 如果您已经在 opencart 项目中使用 composer,您只需将"white/white": "2.0.*"到您的 composer.json 中,然后忽略包含的供应商文件夹...

    bitnami-docker-opencart:用于OpenCart的Bitnami Docker映像

    用于OpenCart的Bitnami Docker映像 什么是OpenCart? OpenCart是面向在线商人的免费开源电子商务平台。 它为成功的在线商店提供了专业而可靠的基础。 TL; DR $ curl -sSL ...

    Plugin-OpenCart:用于与Todo Pago集成的OpenCart插件

    OpenCart 插件以与Todo Pago付款网关集成 参考表 可用版本 一般注意事项 Todo Pago付款插件为Opencart商店提供了一种新的付款方式,将该商店集成到了付款网关中。 此插件的版本已在PHP 5.4-5.3和Opencart 1.5.6.4...

    yeoman-opencart:适用于Opencart的Yeoman发电机

    约曼·Opencart 适用于电子商务平台的生成器。 什么? 什么是Yeoman? 技巧问题。 没关系是这个人: 基本上,他戴着顶帽子,住在您的计算机中,然后等待您告诉他您希望创建哪种应用程序。 并非每台新计算机都...

    knawat-dropshipping-opencart:适用于OpenCart 2和3的Knawat Dropshipping模块

    Knawat Dropshipping Opencart 欢迎使用GitHub上的Knawat DropShipping Opencart Module存储库。 在这里,您可以浏览源代码,查看未解决的问题并跟踪开发情况。 该模块仍在开发中,一旦我们发布稳定版本,您可以...

    iugu-opencart:Iugu OpenCart

    IUGU - 票据的 OpenCart 模块 安装 由 Felipo Antonoff Araújo 开发的模块 - 步骤 1) 将文件夹:admin、catalog、image、system 和 vqmod 发送到您商店的根目录 步骤 2) 如果我需要对上传文件夹的权限,如果主机...

    suggestions-opencart:用于 OpenCart 的 DaData.ru 提示模块

    DaData.ru 提示 OpenCart 描述 该模块按姓名和邮政地址显示提示,并使用“提示”服务 [DaData.ru] ( ) 在 OpenCart 的注册和订购页面上自动确定邮政编码。 根据在线商店的评论,该模块显着提高了从用户那里收到的...

    modulo-JadLog-para-opencart:IntegraçaoWeb服务Jadlog

    模块-JadLog-for-opencart 集成Web服务jadlog信息: 与jadLog载体集成的模块。 该模块支持多种运输方式。 该模块允许将固定金额添加到由承运人计算的运费中。 要使用它,您必须与jadLog签订合同。 该模块不会...

    openshift-opencart:用于 OpenShift 的 OpenCart 快速启动库

    OpenShift 上的 OpenCart 这个 git 存储库可帮助您在 OpenShift 上安装 OpenCart 并快速启动和运行。 后端数据库是 MySQL,数据库名称与您的应用程序名称相同(使用 $_ENV['OPENSHIFT_APP_NAME'])。 您可以使用任何...

    S3-Opencart:Opencart 的 S3 模板系统

    Opencart 的 S3 响应式模板系统 - V 1.0 用于 Opencart 的 S3 响应框架与 Bootstrap 响应图像及更少相关 6 列网格 150 多个模块位置 适合任何设计 支持 IE7 和 IE8 自定义 template_modules.less 可以更新您的...

    opencart:免费的购物车系统。 OpenCart是基于PHP的开源在线电子商务解决方案

    OpenCart总览 OpenCart是面向在线商人的免费开源电子商务平台。 OpenCart为建立成功的在线商店提供了专业而可靠的基础。如何安装请阅读存储库中包含的或下载文件。如何从以前的版本升级请阅读存储库中包含的或下载...

    small-opencart:为小店定制的opencart,有一些额外的功能

    小敞篷车 为小商店定制的具有一些额外功能的 opencart。

    opencart2.0数据库结构

    opencart2.0数据库结构

    opencart-theme-boilerplate:Opencart Theme现场开发样板

    开始之前阅读 安装 yarn ./src/rename.sh default 项目结构: live-扩展主题静态保存的目录 ocstore-预先配置的干净opencart src-扩展开发文件 ... 启动OpenCart: docker-compose up -d && grunt

    OpenCart二次开发手册_2011版

    OPENCART 程序架构 opencart 和其它的购物车程序不同,市面上的购物车程序大都使用现成的模版引擎来 开发,而opencart 则是基于MVC+L 的模式来作为开发的架构进而全新开发的一套系统, 所以程序代码相当轻巧,执行效率更...

    OpenCart 1.4 Beginners Guide

    This is a tutorial-style book that follows a practical approach to demonstrate the potential of OpenCart. The book is suitable for those who have basic computer skills. Written with a fast-paced but ...

    opencart-3.7-ifree_opencart3.7_opencart_

    opencart_international_3.7

Global site tag (gtag.js) - Google Analytics