如何在 codeigniter 控制器中访问自定义配置变量

Posted

技术标签:

【中文标题】如何在 codeigniter 控制器中访问自定义配置变量【英文标题】:How to access custom config variable in codeigniter controller 【发布时间】:2015-01-08 09:49:33 【问题描述】:

我有一个 codigniter 项目,其中包含一个名为

的自定义配置文件
application/config/my_config_variables.php:

这包含

<?php
$config['days'] = 20;

在:

 application/config/autoload.php

我已添加:

$autoload['config'] = array('my_config_variables');

当我尝试在我的控制器中使用:

 echo $this->$config['new_daily_contacts'];

我明白了:

Fatal error: Cannot access empty property.

我做错了什么?

附录:

在我的控制器中我添加了:

 // An alternate way to specify the same item:
            $my_config = $this->config->item('my_config_variables',true);
            var_dump($my_config);

这会输出 FALSE——为什么?

【问题讨论】:

您使用的是什么版本的 Codeigniter? CI 2.1 -- 感谢您的关注。 ***.com/a/62427655/9573341 【参考方案1】:

查看 Codeigniter 上的 config documentation。

echo $this->config->item('new_daily_contacts');

这将尝试获取$config['new_daily_contacts'],但从您的帖子看来,您的配置文件中只有$config['days']。但这应该会让你指向正确的方向。

替代方式

您尝试使用另一种方式加载配置,但您使用的是 item 方法,而不是 load 方法。在 item 方法上,第二个参数是您要在配置数组中引用的索引。例如。上面的例子。

$my_config = $this->config->load('my_config_variables', true);
var_dump($my_config);
$days = $this->config->item('days', 'my_config_variables');

因为将 true 作为 load 方法的第二个参数传递将创建一个与配置文件同名的索引。如果碰巧有其他配置文件包含相同的配置名称,这有助于避免任何冲突。

$config['days']; 变为 $config['my_config_variables']['days']

为了访问该配置变量,您必须在 item 方法中传递索引。

https://github.com/bcit-ci/CodeIgniter/blob/2.1-stable/system/core/Config.php#L189

【讨论】:

我已经尝试过,但仍然收到错误 - 请参见上文: 用您的替代方式更新了答案。 感谢您的帮助,$this->config->item('new_daily_contacts');工作。顺便说一句,我不确定索引是什么意思,这是关联数组中的一个键,比如 $config['key'] ? 是的,Codeigniter 在他们的文档中称它为索引,但它是一个键。同样的事情。

以上是关于如何在 codeigniter 控制器中访问自定义配置变量的主要内容,如果未能解决你的问题,请参考以下文章

动态自定义过滤器在 codeigniter 中不起作用

php Codeigniter自定义控制器基础404页面

如何在 codeigniter 中使用自定义字体和图标

在codeigniter中更改文件上载的自定义错误消息

如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]

如何在 CodeIgniter 中为 403 禁止错误设置自定义页面