这是我的库文件 libraray文件名 Commonlib
<?php
class Commonlib extends CI_Controller
{
public function __construct()
{
parent::__construct();
$ci=& get_instance();
$ci->load->database();
}
function getcountries()
{
return $ci->db->get("countries")->result();
}
}
配置文件中的
$autoload['libraries'] = array('database','Commonlib');
这是我的观点
$a = new Commonlib();
$results=$a->getcountries();
foreach ($results as $row) {
// country_id
echo '<a href="#">'.$row->country .'</a><br>';
}
显示此错误不存在的类: 哪里有麻烦?怎么解决呢?
答案 0 :(得分:2)
问题在于命名约定。因为类名和文件名必须匹配。
<?php
class Commonlib {
public function __construct() {
parent::__construct();
$ci=& get_instance();
$ci->load->database();
}
function getcountries(){
return $ci->db->get("countries")->result();
}
}
在视图中
$a = new Commonlib();
$results=$a->getcountries();
foreach ($results as $row)
{ // country_id
echo '<a href="#">'.$row->country .'</a><br>';
}
答案 1 :(得分:1)
转到您的图书馆并使用此代码进行更改。
<?php
class your_library_Name {
function getcountries(){
return $ci->db->get("countries")->result();
}
}
这就是如何调用它
$rec= $this->your_library_Name->getcountries();
答案 2 :(得分:1)
库名称应类似于此CI_Commonlib ...请尝试。
答案 3 :(得分:0)
您可以执行以下任何操作。
默认情况下,大多数人只会将其库放入system/libraries
中,并使用自动加载器或$this->load->library()
进行加载。如果执行此操作,则必须在类名前面加上CI_
,以便CodeIgniter可以识别它,因为系统文件夹用于存储文件。对于您的情况,您需要:
class CI_Commonlib extends CI_Controller
{
}
这可行,但是它将您的自定义代码混合到CodeIgniter系统文件中,当您要升级安装时,它会变得非常混乱。
Commonlib
对象移动到application/libraries/Commonlib.php
,则无需对代码进行任何更改。人们通常希望在多个CodeIgniter安装之间共享文件时将自定义对象添加到system
。多个应用程序可以共享同一个BASEPATH
,因此将代码放置在共享目录已存在的位置很有意义。
$this->load->add_package_path()
进行此操作。您可以将共享代码移至custom/libraries
并开始比赛。在这种情况下,您可以相应地更新控制器(而非视图)。https://www.codeigniter.com/user_guide/libraries/loader.html
$this->load->add_package_path('custom/libraries');
$this->load->library('commonlib');