Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Codeigniter库中加载模型_Codeigniter_Model - Fatal编程技术网

在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();
    
          }
        }
    

假设您的类存在于application/libraries文件夹中,即field\u validation.php,而存在于模型中的其他类名为Fields\u model.php

您需要执行以下步骤,在库中创建公共对象名$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功能访问库中数据库的其他方法吗?我深入研究了框架以了解数据库是如何加载的。我用一些代码编辑了我的答案,以获取DB类的一个实例。我认为它应该能工作,但我没有机会测试它,所以不能保证!:-汉克斯,斯蒂芬!您知道使用codeigniter功能访问库中数据库的其他方法吗?我深入研究了框架以了解数据库是如何加载的。我用一些代码编辑了我的答案,以获取DB类的一个实例。我认为它应该能工作,但我没有机会测试它,所以不能保证!:-SJeg,在一个新的库中,$CI=&get_instance()似乎可以工作,但我的库扩展了CI_Lang。这就是我出现此错误的原因。事实上,问题不是访问模块,而是访问CI实例.Jeg,在一个新库中,$CI=&get_instance()似乎可以工作,但我的库扩展了CI_Lang。这就是我出现此错误的原因。事实上,问题不是访问模块,而是访问CI实例。