ci框架autoload机制,多项目配置共用molde、library、helper

来源:互联网 发布:centos修改主机名 编辑:程序博客网 时间:2024/06/03 18:40

autoload:

进入ci框架核心目录core

打开load.php

找到_ci_autoloader方法

看到这样一段话

// Autoload packagesif (isset($autoload['packages'])){foreach ($autoload['packages'] as $package_path){$this->add_package_path($package_path);}                        //print_r($this->_ci_library_paths);exit;//阿猛测试用}

这个数组$autoload['packages']即是配置文件中autoload.php中的配置,如:

$autoload['packages'] = array(BASEPATH.'../阿猛的共用项目library,model,helper');

这句话 就是自动加载一个目录。再来看CI里面的写法。

自动加载包路径:_ci_library_paths,_ci_model_paths,_ci_helper_paths,_ci_view_paths (CI的这4个路径都会先到上面的包里面去寻找)


public function add_package_path($path, $view_cascade = TRUE){$path = rtrim($path, '/').'/';array_unshift($this->_ci_library_paths, $path);array_unshift($this->_ci_model_paths, $path);array_unshift($this->_ci_helper_paths, $path);                $this->_ci_view_paths = array($path.'views/' => $view_cascade) + $this->_ci_view_paths;// Add config file path$config =& $this->_ci_get_component('config');$config->_config_paths[] = $path;return $this;}

在这里加个断点,打印下。可以看到加载情况。

Array(    [0] => D:/x/web/framework/../lm/     //这句即是新配置的自动加载包    [2] => D:\x\web\manage\application\    [3] => D:/x/web/framework/)

简而概之:

我们在控制器中load加载当前项目的library或者model又或者helper。

我想先从其他项目中加载这些类或helper。这时就需要用到上面的自动加载包路径功能



举例说明:

/项目A---------------------目录同CI项目完全一样

/项目B

/framework

/lm_autoload


其中lm_autoload是自动加载包路径,内容包括:

/lm_autoload/librarys

/lm_autoload/model/user_model.php

/lm_autoload/helper


这时我们在项目A和项目B都想调用共同的user_model类,就很方便的能做到了。

$this->load->model('user_model');//这里他们都会先去查找‘自动加载包路径’

同时也可以只调用自己项目下的包路径。而互不影响。我觉得这也是CI配置多项目的好方法。

配置多项目时,每个项目下的index.php文件需要修改下共用核心框架目录:

index.php

$system_path = '../framework/';









0 0