在Codeigniter库中加载模型
我有一段代码:在Codeigniter库中加载模型,codeigniter,model,Codeigniter,Model,我有一段代码: class MY_Language extends CI_Language { function MY_Language() { parent::CI_Language(); $CI =& get_instance(); $CI->load->model('language_model'); $languages = $this->language_model-&
class MY_Language extends CI_Language {
function MY_Language()
{
parent::CI_Language();
$CI =& get_instance();
$CI->load->model('language_model');
$languages = $this->language_model->get_languages();
print_r($languages);
}
}
但我一直得到“致命错误:在C:\xampp\htdocs\application\libraries\MY_Language.php的第44行调用未定义的函数get_instance()”。有什么想法吗?
提前谢谢 框架在CodeIgniter基础对象之前创建Language对象。因此,在代码中的这一点上,您还不能使用基本对象。事实上,codeigniter/Base5.php文件尚未包括在内。此文件定义get_实例函数。这就是为什么你会遇到这个特别的错误 如果查看codeigniter/codeigniter.php文件,您将看到
$LANG =& load_class('Language');
先于
require(BASEPATH.'codeigniter/Base5'.EXT);
编辑
基于您在下面的评论,我认为您应该能够获得如下DB实例。这是从Loader类的数据库函数中挖掘出来的
require_once BASEPATH.'database/DB'.EXT;
$db = DB('', false);
框架在CodeIgniter基础对象之前创建Language对象。因此,在代码中的这一点上,您还不能使用基本对象。事实上,codeigniter/Base5.php文件尚未包括在内。此文件定义get_实例函数。这就是为什么你会遇到这个特别的错误 如果查看codeigniter/codeigniter.php文件,您将看到
$LANG =& load_class('Language');
先于
require(BASEPATH.'codeigniter/Base5'.EXT);
编辑
基于您在下面的评论,我认为您应该能够获得如下DB实例。这是从Loader类的数据库函数中挖掘出来的
require_once BASEPATH.'database/DB'.EXT;
$db = DB('', false);
StephenCurran从库中加载模型的方法非常困难。您只需要从CI实例获取加载的模型
$languages = $CI->language_model->get_languages();
但首先,您需要先使用普通加载或自动加载来加载数据库类
$this->load->database(); or $autoload['libraries'] = array('database');
如果您使用autoload加载实例,您应该按照正确的顺序排列它
$autoload['libraries'] = array('database', 'your_library_name');
在您的库中加载了模型
$CI->load->model('language_model')
,实际上您已经在CI实例中附加了模型。您可以很容易地从CI实例中获取它。Stephen Curran从库中加载模型的方法非常困难。您只需要从CI实例获取加载的模型
$languages = $CI->language_model->get_languages();
但首先,您需要先使用普通加载或自动加载来加载数据库类
$this->load->database(); or $autoload['libraries'] = array('database');
如果您使用autoload加载实例,您应该按照正确的顺序排列它
$autoload['libraries'] = array('database', 'your_library_name');
在您的库中加载了模型
$CI->load->model('language_model')
,实际上您已经在CI实例中附加了模型。您可以很容易地从CI实例中获取它。假设您的类存在于application/libraries文件夹中,即field\u validation.php,而存在于模型中的其他类名即Fields\u model.php
$languages = $CI->language_model->get_languages();
您需要执行以下步骤,在库中创建公共对象名$ci,并在库构造函数中执行以下步骤
- 加载CodeIgniter全局对象($CI=&get_instance())
- 从CodeIgniter全局对象,您可以访问您的模型 ($CI->load->model('Fields\u model'))
- 将CodeIgniter对象分配给 公共变量,您可以通过( $this->ci->Fields\u model->applyValidation()
- 按照下面的例子
class FieldValidation { public $ci; public function __construct() { $CI = & get_instance(); $CI->load->model('Fields_model'); $this->ci = $CI; } public function applyValidation(){ $this->ci->Fields_model->applyValidation(); } }
- 加载CodeIgniter全局对象($CI=&get_instance())
- 从CodeIgniter全局对象,您可以访问您的模型 ($CI->load->model('Fields\u model'))
- 将CodeIgniter对象分配给 公共变量,您可以通过( $this->ci->Fields\u model->applyValidation()
- 按照下面的例子
class FieldValidation { public $ci; public function __construct() { $CI = & get_instance(); $CI->load->model('Fields_model'); $this->ci = $CI; } public function applyValidation(){ $this->ci->Fields_model->applyValidation(); } }