在我的 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
答案 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;
}