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‘共享总线’的作用了吧。
分享到:
相关推荐
Bambora在线结帐-OpenCart支持的OpenCart版本该模块仅在OpenCart 2.3.x和3.0.x上进行了测试支持的支付网关Bambora在线结帐安装说明从以下位置下载最新模块: OpenCart市场: ://... 上载模块完成后,转到Extensions-> ...
官方Veritrans OpenCart(v1.5.xx及更低版本)扩展 Veritrans :red_heart: OpenCart! 这是OpenCart电子商务平台的官方Veritrans扩展。 安装 解压缩vtweb-opencart-master.zip文件。 通过FTP连接找到您商店的根...
VueFront适用于OpenCart 2.x-3.x的CMS Connect应用程序 显示你的 :red_heart: -给我们一个 :star: 帮助我们将这个项目发展到最好! VueFront是CMS不可知的SPA和PWA前端,适用于您的老式Blog和电子商务网站。 ...
这是用于的 OpenCart 扩展 在 Opencart 2.0.0.0 上测试 安装 在下载最新版本。 如果您已经在 opencart 项目中使用 composer,您只需将"white/white": "2.0.*"到您的 composer.json 中,然后忽略包含的供应商文件夹...
用于OpenCart的Bitnami Docker映像 什么是OpenCart? OpenCart是面向在线商人的免费开源电子商务平台。 它为成功的在线商店提供了专业而可靠的基础。 TL; DR $ curl -sSL ...
OpenCart 插件以与Todo Pago付款网关集成 参考表 可用版本 一般注意事项 Todo Pago付款插件为Opencart商店提供了一种新的付款方式,将该商店集成到了付款网关中。 此插件的版本已在PHP 5.4-5.3和Opencart 1.5.6.4...
约曼·Opencart 适用于电子商务平台的生成器。 什么? 什么是Yeoman? 技巧问题。 没关系是这个人: 基本上,他戴着顶帽子,住在您的计算机中,然后等待您告诉他您希望创建哪种应用程序。 并非每台新计算机都...
Knawat Dropshipping Opencart 欢迎使用GitHub上的Knawat DropShipping Opencart Module存储库。 在这里,您可以浏览源代码,查看未解决的问题并跟踪开发情况。 该模块仍在开发中,一旦我们发布稳定版本,您可以...
IUGU - 票据的 OpenCart 模块 安装 由 Felipo Antonoff Araújo 开发的模块 - 步骤 1) 将文件夹:admin、catalog、image、system 和 vqmod 发送到您商店的根目录 步骤 2) 如果我需要对上传文件夹的权限,如果主机...
DaData.ru 提示 OpenCart 描述 该模块按姓名和邮政地址显示提示,并使用“提示”服务 [DaData.ru] ( ) 在 OpenCart 的注册和订购页面上自动确定邮政编码。 根据在线商店的评论,该模块显着提高了从用户那里收到的...
模块-JadLog-for-opencart 集成Web服务jadlog信息: 与jadLog载体集成的模块。 该模块支持多种运输方式。 该模块允许将固定金额添加到由承运人计算的运费中。 要使用它,您必须与jadLog签订合同。 该模块不会...
OpenShift 上的 OpenCart 这个 git 存储库可帮助您在 OpenShift 上安装 OpenCart 并快速启动和运行。 后端数据库是 MySQL,数据库名称与您的应用程序名称相同(使用 $_ENV['OPENSHIFT_APP_NAME'])。 您可以使用任何...
Opencart 的 S3 响应式模板系统 - V 1.0 用于 Opencart 的 S3 响应框架与 Bootstrap 响应图像及更少相关 6 列网格 150 多个模块位置 适合任何设计 支持 IE7 和 IE8 自定义 template_modules.less 可以更新您的...
OpenCart总览 OpenCart是面向在线商人的免费开源电子商务平台。 OpenCart为建立成功的在线商店提供了专业而可靠的基础。如何安装请阅读存储库中包含的或下载文件。如何从以前的版本升级请阅读存储库中包含的或下载...
小敞篷车 为小商店定制的具有一些额外功能的 opencart。
opencart2.0数据库结构
开始之前阅读 安装 yarn ./src/rename.sh default 项目结构: live-扩展主题静态保存的目录 ocstore-预先配置的干净opencart src-扩展开发文件 ... 启动OpenCart: docker-compose up -d && grunt
OPENCART 程序架构 opencart 和其它的购物车程序不同,市面上的购物车程序大都使用现成的模版引擎来 开发,而opencart 则是基于MVC+L 的模式来作为开发的架构进而全新开发的一套系统, 所以程序代码相当轻巧,执行效率更...
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_international_3.7