zoukankan      html  css  js  c++  java
  • OpenCart 之registry功用

    1. “Registry”设计模式

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

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

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

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


    2、整体流程

    (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返回给用户


    3、魔术函数(Magic method)

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

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

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

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

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

  • 相关阅读:
    hosts 文件妙用
    asp.net 各种路径
    正则表达式
    int.Parse()、int.TryParse()和Convert.ToInt32()的区别
    总结.NET 中什么时候用 Static
    利用.net的内部机制在asp.net中实现身份验证
    server.transfer 用法
    sql server Datetime格式转换
    如果在代码中使用JS
    js 添加广告
  • 原文地址:https://www.cnblogs.com/mssql8/p/3832687.html
Copyright © 2011-2022 走看看