将库文件加载到config / file.php

时间:2015-03-14 09:45:51

标签: codeigniter

在我的 config / config_setting.php 上,我需要能够将库文件 libraries / settings.php 加载到其上,并且能够使用得到如下的功能。

我希望能够$config['encryption_key'] = $this->settings->get('encryption_key');

在配置文件中使库工作需要做些什么?

<?php

require_once APPPATH . 'libraries/Setting.php';

$config['encryption_key'] = $this->settings->get('encryption_key');

刷新页面时显示错误未定义属性:MX_Config :: $ setting

2 个答案:

答案 0 :(得分:1)

class MYLibrary
{
    public function __construct()
    {

    }

    public function loadSettings($custom=null)
    {
        $settings = array();

        if(is_null($custom))
        {
            // Grab the default config file if no custom one is set
            // application/config/config
            $settings = $this->config->config;
        }
        else
        {
            // Load a custom settings configuration
            // application/config/custom
            $settings = $this->load->config($custom);
        }

        $this->load->model('settings_model');

        $rows = $this->settings_model->getAllRows();

        if(!$rows) return;

        foreach($rows as $k => $v){
            if(array_key_exists($k, $settings)){
                $this->config->set_item($k, $v);
            }
        }
    }

    public function __get($object)
    {
        $instance =&get_instance();
        return $instance->$object;
    }
}

-

class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();

        $this->load->library('MYLibrary');
        $this->mylibrary->loadSettings();

    }
}

我个人会创建一个Hook,而不是在MY_Controllers构造函数中加载一个库。您可以简单地创建$hook['pre_controller']并粘贴到您的库中。这样它将在任何构造函数之前加载。

答案 1 :(得分:0)

经过一些试验和错误现在以这种方式运行动态配置文件。

名称:config / config_setting.php

<?php

require_once( BASEPATH .'database/DB'. EXT );

$db =& DB();
$query = $db->get('table');
$result = $query->result();
foreach( $result as $row )
{
   $config[ $row->item ] = $row->value;
}

enter image description here