如何在codeigniter中的自定义库文件中使用get_instance()

时间:2016-05-17 09:14:23

标签: php codeigniter

这是我在codeigniter

中的库文件夹中的自定义类
class Commonlib {

        public function __construct()
        {      
                 $ci=& get_instance();
                 $ci->load->database();
        }
           function getcountries(){

                return  $ci->db->get("countries")->result();
            }
                function cities(){ 
                return  $ci->db->get("cities")->result();
            }
    }

这是我的观点

$results=$this->commonlib->getcountries();
   foreach ($results as $row)
   { 
       echo '<a   href="#">'.$row->country .'</a><br>';
   }

错误是严重性:通知消息:未定义的变量:ci 如何在库构造函数中加载数据库

2 个答案:

答案 0 :(得分:3)

尝试以下代码。建议有一些变化

class Commonlib {
    private $ci;
    public function __construct()
    {      
             $this -> ci=& get_instance();
             $this -> ci->load->database();
    }
       function getcountries(){

            return  $this -> ci->db->get("countries")->result();
        }
            function cities(){ 
            return  $this -> ci->db->get("cities")->result();
        }
}

注意:$db方法的旧代码__construct()中,仅在该方法中具有范围。为了在整个类中全局获取ci对象,我使用了$this

答案 1 :(得分:0)

请尝试创建帮助

在dir app / helpers /

中创建助手

layout_helper.php

function getcountries()
{

    $CI = & get_instance();     
    return  $CI->db->get("countries")->result();   
}

现在功能使用是视图文件 那样:

$result = getcountries();

foreach ($results as $row)
{ 
   echo '<a   href="#">'.$row->country .'</a><br>';
}