在CodeIgniter中加载多个库 - PHP

时间:2015-05-06 11:33:06

标签: php codeigniter

我需要在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');
    }
  1. 我在4个案例中交换了加载顺序。无论哪一个提到第二个都不加载。
  2. 在所有情况下,只加载了第一个提到的库,本通知显示第二个库。

    A PHP Error was encountered Severity: Notice Message: Undefined property: Unify::$libb Filename: controllers/Unify.php Line Number: 30

    我无法在CI用户手册或SO上找到任何灵魂。我做错了什么?

3 个答案:

答案 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

干杯!