不在constants.php中的对象上下文中的$ this

时间:2012-08-10 14:49:57

标签: php codeigniter

当我尝试在define('LANG', $this->uri->rsegment(2));中使用constants.php时,我收到了此错误:

Using $this when not in object context in constants.php

我不知道为什么。我是 codeIgniter 的新手,我想定义一个从URI中获取语言的常量。我已经使用REQUEST_URI完成了类似的操作,但使用了uri->segment;这将更容易。

1 个答案:

答案 0 :(得分:0)

codeigniter的架构方式,你不能在config.php中使用$this,因为所有框架资源都没有加载时间constant.php被加载。

为了满足您的需求,您应该执行以下操作:

创建一个新的自定义配置文件,比如app_config.php(您可以随意调用它)

将此代码添加到app_config文件:

$ci = &get_instance();
define('LANG', $ci->uri->rsegment(2));

将此文件放在config文件夹(config.php所在的文件夹)

在autoload.php中,添加此配置文件的名称以自动加载为:

/*
| -------------------------------------------------------------------
|  Auto-load Config files
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['config'] = array('config1', 'config2');
|
| NOTE: This item is intended for use ONLY if you have created custom
| config files.  Otherwise, leave it blank.
|
*/

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

现在,您将能够在整个应用程序中访问常量LANG。