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中,对于这个文件,按惯例,使用一句:
连接数据库的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