OpenCart解读(一)装载器locator

上一篇 / 下一篇  2007-10-03 22:39:16 / 个人分类:OpenCart

    OpenCart是使用面向对象编程的,同时又使用了MVC的设计思想,因此在解读其源代码时是看不到过程式的代码的。同时它把MVC框架部分单独放在library目录中,这个部分的内容一般是不作修改的。就象你显式地使用其它框架编程一样。

    library子目录下除了子目录外,就只有一个装配器文件:locator.php,这个文件中只有一个类:locator,实际上是一个调度程序,框架中的其它组件,如controller,module,session,cache,language统统由它装载调度。

    为了让系统运行起来, 象所有的PHP程序一样,OpenCart需要把系统中的一些重要的参数从config.php中,对于这个文件,按惯例,使用一句:

require('config.php');

  连接数据库的DSN参数和相关目录设置就可用了,下面有必要将config.php文件列表在下,这有利于我们理解OpenCart的设计思想:

<?php
// HTTP
define('HTTP_SERVER', 'http://localhost/opencart/');
define('HTTP_IMAGE', 'http://localhost/opencart/image/');

// HTTPS
define('HTTPS_SERVER', '');
define('HTTPS_IMAGE', '');

// DIR
define('DIR_CACHE', 'C:\wamp\www\opencart/cache/');
define('DIR_DOWNLOAD', 'C:\wamp\www\opencart/download/');
define('DIR_IMAGE', 'C:\wamp\www\opencart/image/');
define('DIR_LIBRARY', 'C:\wamp\www\opencart/library/');
define('DIR_MODEL', 'C:\wamp\www\opencart\catalog/model/');
define('DIR_CONTROLLER', 'C:\wamp\www\opencart\catalog/controller/');
define('DIR_LANGUAGE', 'C:\wamp\www\opencart\catalog/language/');
define('DIR_EXTENSION', 'C:\wamp\www\opencart\catalog/extension/');
define('DIR_TEMPLATE', 'C:\wamp\www\opencart\catalog/template/');

// DB
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '111111');
define('DB_NAME', 'opencart');
?>

与别的系统可能有些不同是的,OpenCart有一个config类用来从别的设置文件或数据库里存取数据,这些数据也是在程序一开始运行就需要的,因此第一个由locator装载的就是config类,装载config类就只简单地用了一句:

// Config
$config =& $locator->get('config');

    对应locator内部的代码如下:

 function &get($key) {
  if (!isset($this->data[$key])) {
   $this->data[$key] =& $this->create($key);
  }
  
  return $this->data[$key];
 }

    任何一个类都确保只有一个实例,如果调用相关对象时已经有其它部分创建了这个实例,get方法只是简单地返回它,如果是第一次调用,就调用create方法创建它。

    其它所有的对象这是以这种方法来进行管理。

(未完待续)

 

 


相关阅读:

TAG: OpenCart

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 17151
  • 日志数: 87
  • 建立时间: 2007-09-29
  • 更新时间: 2008-04-15

RSS订阅

Open Toolbar