CodeIgniter:My_Lang 中的 get_instance
Posted
技术标签:
【中文标题】CodeIgniter:My_Lang 中的 get_instance【英文标题】:CodeIgniter: get_instance inside My_Lang 【发布时间】:2011-11-24 15:57:17 【问题描述】:我发现了这个有用的国际化代码:
http://pastebin.com/SyKmPYTX
除了我无法在这个类中使用 CI 函数之外,一切都很好。
我想从 DB 中设置 $languages 和 $special 变量。
但是当我使用 $CI =& get_instance();在实例函数中显示以下错误:
致命错误:在第 231 行的 /system/core/CodeIgniter.php 中找不到类“CI_Controller”
【问题讨论】:
【参考方案1】:在 CodeIgniter 实例存在之前加载语言类,这就是您收到错误的原因。
您可以使用post_controller_constructor 挂钩来设置您的变量。
这是 CodeIgniter 论坛中的一个帖子,有人试图做类似的事情:http://codeigniter.com/forums/viewthread/108639/
【讨论】:
【参考方案2】:最简单的方法
在 My_Lang.php 中
var $languages = array();
function __construct()
parent::__construct();
require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->query( 'SELECT * FROM languages');
$result = $query->result();
foreach( $result as $row )
$this->languages[$row->short_name] = $row->full_name;
我这样做并且工作正常 :)) 我还在 foreach 中添加了 default_uri。
【讨论】:
以上是关于CodeIgniter:My_Lang 中的 get_instance的主要内容,如果未能解决你的问题,请参考以下文章
从 Codeigniter Active Record 中的子查询中选择