prestashop1.6.1.0的config.inc.php文件

在文件index中,require(_PS_ADMIN_DIR_.'/../config/config.inc.php');
    首先载入了配置文件(config.inc.php)。
    在配置文件(config.inc.php)中,
         第一, 载入了require_once(dirname(__FILE__).'/defines.inc.php');
                  平台定义文件。主要是系统目录路径及一些配置常量(defines.inc.php)。
         第二,检查平台是否已经安装。
                  未安装,则进行安装流程;
                  已安装,则调用设置的各项参数,执行平台运行流程。
        第三, 设置平台的各项参数配置          
                   require_once(_PS_ROOT_DIR_.'/config/settings.inc.php');
                   数据库,密钥,缓存等参数
                   
       第四,执行平台的自动载入流程require_once(_PS_CONFIG_DIR_.'autoload.php');

              (  这个文件可以考虑增加多店铺,多平台的一些功能配置。?????
                现在虽然是多店铺,但只是连锁性质的平台,
                  业务核心可以扩展成 阿里+京东    或者   京东+美团这样的电商平台,
                     还可以2次开发为总平台,分平台,工厂供应商,分销商这样的4级平台
                       也就是b2b2b2c, o2o,外贸电商平台,批发等类似的运行模式)

                  这个流程会载入一些相关的文档:
                  require_once(_PS_CONFIG_DIR_.'alias.php');
                  //经常使用的一些工具方法的别名,
                  如:function ppp($var){
                              return (Tools::p($var));
                                       }
                    其实,在这里  Tools::p($var)并不能执行,不然的话index文档中的Configuration 类也可以执行了                                 
                  
                  
                       require_once(_PS_CLASS_DIR_.'PrestaShopAutoload.php');
                       PrestaShopAutoload.php是一个自动加载类
                       

                        spl_autoload_register(array(PrestaShopAutoload::getInstance(), 'load'));
                        这个就是在prestashop中,类文件不用手动包含进来,而能够直接使用的关键。
                        在这句代码之后,类似Tools::p($var)这样的语句就可以正常的执行了。
                        这个就是presta的类加载机制。
                         首先,PrestaShopAutoload::getInstance()是类自身的单例模式,
                                   其中的方法load作为自动加载类的处理函数。   
                                   如: Tools::p($var)中的类Tools还没有加载就使用了,
                                   则PrestaShopAutoload的方法load会自动包含类Tools所在的文件。
                                   然而,要加载的这个文件在哪个目录里面,文件名是什么呢?
                                   
                                   
                          其次, PrestaShopAutoload::getInstance()在初始化的时候,
                          执行自身的构造器__construct
                          const INDEX_FILE = 'cache/class_index.php';
                            其一是判断有没有cache/class_index.php这个文件,有就include
                            没有则初始化这个文件,这个文件是所有类的一个索引,供load方法使用,结构如下:
 
                          'Dispatcher' =>
                          array (
                            'path' => '',
                            'type' => 'class',
                            'override' => false,
                          ),
                          'DispatcherCore' =>
                          array (
                            'path' => 'classes/Dispatcher.php',
                            'type' => 'class',
                            'override' => false,
                          ),
                        初始化读取了classes,controllers,Adapter,Core
                        override/classes,override/controllers下的所有的php文件。
                        
                        最后,是load方法要加载的这个类文件在哪个目录里面,文件名是什么。
                        如:Dispatcher::getInstance()->dispatch();
                        load()收到的$classname是Dispatcher,
                        那么他会首先判断这个类名是不是以Core结尾的,
                        如果是,那么加载Core所指向的文件。
                        如果不是,先判断索引里面该类下有没有path,
                        如果有,则把这个自定义的类和core类一起加载。
                        从这里看,这个自定义类应该需要继承core类。
                        如果没有则只加载core类,
                        并自动添加一个继承core类的名为Dispatcher的类,方便调用。
                        
                        
           第五,require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'bootstrap.php';
                   支持  bootstrap前端框架,通过适配器定位服务
                   Adapter_ServiceLocator::setServiceContainerInstance($container);   
                   为了适配各种移动设备

                    支持sass的css框架,js的jquery框架.
                   prestashop1.6.1.0默认主题模板为jquery1.11                  
                   
             第六,/* Initialize the current Shop */
                      /* Include all defines related to base uri and theme name */
                      require_once(dirname(__FILE__).'/defines_uri.inc.php');      
                      /* Load all languages */
                      /* Loading default country */
                      /* Set locales */
                      /* Instantiate cookie */
                      /* Create employee if in BO, customer else */
                      /* if the language stored in the cookie is not available language, use default language */
                      /* Get smarty */
                      require_once(dirname(__FILE__).'/smarty.config.inc.php');
                      $context->smarty = $smarty;
                            

转载于:https://my.oschina.net/u/2615982/blog/607068

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值