📅  最后修改于: 2023-12-03 15:38:14.337000             🧑  作者: Mango
在 Codeigniter 中,我们可以通过配置文件来设置和管理配置变量。配置文件位于 application/config
目录中,文件名为 config.php
。在该文件中,我们可以设置系统所需的各种配置变量,例如数据库连接信息、URL 路由规则、默认时区等。
除了配置文件之外,我们还可以使用以下方法来设置或获取配置变量:
Codeigniter 为我们提供了一个全局函数 config
,可以用来获取或设置配置变量。该函数接受一个参数,即配置变量名,返回对应的配置值。如果传入两个参数,则表示设置配置变量的值。
$value = config('config_item_name');
config('config_item_name', 'config_item_value');
Codeigniter 还提供了一个 Config 类,可以用来更方便地管理配置变量。该类提供了以下方法:
$CI =& get_instance();
$CI->config->item('config_item_name');
$CI =& get_instance();
$CI->config->set_item('config_item_name', 'config_item_value');
在某些情况下,我们可能需要动态地修改配置变量的值,并将其保存到数据库中。Codeigniter 提供了一个 Config 驱动,可以将配置变量存储到数据库中。使用该驱动的方法如下:
首先,我们需要创建一个数据库表来存储配置变量。例如,我们可以创建一个名为 config
的表,包含以下字段:
CREATE TABLE `config` (
`id` int(11) NOT NULL AUTO_INCREMENT, -- 记录 ID
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, -- 变量名
`value` text COLLATE utf8_unicode_ci NOT NULL, -- 变量值
`description` text COLLATE utf8_unicode_ci, -- 变量描述
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
接着,我们需要创建一个模型类来操作配置变量。例如,我们可以创建一个名为 Config_model
的类,继承自 Codeigniter 的 CI_Model
类,包含以下方法:
class Config_model extends CI_Model {
// 获取配置变量值
public function get_value($name) {
$query = $this->db->get_where('config', array('name' => $name));
$row = $query->row();
return isset($row->value) ? $row->value : NULL;
}
// 设置配置变量值
public function set_value($name, $value) {
$data = array('value' => $value);
if ($this->db->update('config', $data, array('name' => $name))) {
return TRUE;
} else {
return FALSE;
}
}
}
最后,我们需要在 application/config/autoload.php
文件中加载 Config 驱动,并设置其数据库表名和模型类名:
$autoload['libraries'] = array('database', 'session', 'form_validation', 'config');
$autoload['config'] = array('config');
$config['config_table_name'] = 'config'; // 配置表名
$config['config_model_name'] = 'config_model'; // 配置模型类名
现在,我们就可以使用 Config 驱动来操作配置变量了。例如,获取配置变量值的方法如下:
$CI =& get_instance();
$CI->config->load('config');
$value = $CI->config->item('config_item_name');
if (!$value) {
$CI->load->model($CI->config->item('config_model_name'));
$value = $CI->$config->config_model->$get_value('config_item_name');
$CI->config->set_item('config_item_name', $value);
}
以上是在 Codeigniter 中设置或获取配置变量的方法,您可以根据自己的需要进行选择和使用。