我需要在CI控制器中加载2个以上的库并调用其成员函数。我尝试了以下方法,但没有用。
1
$this->load->library('liba');
$result = $this->liba->SearchTours($searchParams);
echo $result;
$this->load->library('libb');
$result2 = $this->libb->tourFetch($searchParams);
echo $result2;
2
$this->load->library(array('liba' , 'libb'));
$result = $this->liba->SearchTours($searchParams);
echo $result;
$result2 = $this->libb->tourFetch($searchParams);
echo $result2;
3
$this->load->library('liba');
$this->load->library('libb');
$result = $this->liba->SearchTours($searchParams);
echo $result;
$result2 = $this->libb->tourFetch($searchParams);
echo $result2;
4
public function __construct(){
parent::__construct();
$this->load->library('liba');
$this->load->library('libb');
}
在所有情况下,只加载了第一个提到的库,本通知显示第二个库。
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Unify::$libb
Filename: controllers/Unify.php
Line Number: 30
我无法在CI用户手册或SO上找到任何灵魂。我做错了什么?
答案 0 :(得分:2)
在CI中加载多个库只需传入数组
$this->load->library( array('liba', 'libb') );
和此通知,因为您不包括
$CI =& get_instance();
在您的控制器内
答案 1 :(得分:2)
文件是否在您的控制器文件夹中。如果是,那么您可能没有正确扩展您的控制器。 像:
myController extends CI_Controller{}
否则您需要在文件中使用$CI =& get_instance();
然后使用
$CI->load->library('your_library');
修改强>
注意:检查您的库文件是否大写为Libb.php
答案 2 :(得分:1)
无论何时使用库和帮助程序并且需要CI中的内置方法,请使用
$CI =& get_instance();
然后像这样使用它
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url'); //...etc
请参阅codeigniter.com/userguide2/general/creating_libraries.html了解详情
或者为了更好的解决方案,您可以使用codeigniter + HMVC从另一个控制器调用控制器,避免任何冲突并简化您的故障排除,请参阅
MVC vs HMVC for web application development
干杯!