Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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-PHP中加载多个库_Php_Codeigniter - Fatal编程技术网

在CodeIgniter-PHP中加载多个库

在CodeIgniter-PHP中加载多个库,php,codeigniter,Php,Codeigniter,我需要在一个CI控制器中加载2个以上的库,并调用它们的成员函数。我试过以下方法,但没有用 一, 二, 三, 四, 我已经交换了上述4种情况下的装载顺序。第二个提到的不加载 在所有情况下,仅加载第一个提到的库,并且此通知针对第二个库显示 遇到PHP错误 严重性:通知 消息:未定义的属性:Unify::$libb 文件名:controllers/Unify.php 行号:30 我在CI用户手册上找不到任何解决方案。我做错了什么?在CI中加载多个库只需传入它数组 $this->load->

我需要在一个CI控制器中加载2个以上的库,并调用它们的成员函数。我试过以下方法,但没有用

一,

二,

三,

四,

  • 我已经交换了上述4种情况下的装载顺序。第二个提到的不加载
  • 在所有情况下,仅加载第一个提到的库,并且此通知针对第二个库显示

    遇到PHP错误 严重性:通知 消息:未定义的属性:Unify::$libb 文件名:controllers/Unify.php 行号:30


    我在CI用户手册上找不到任何解决方案。我做错了什么?

    在CI中加载多个库只需传入它数组

    $this->load->library( array('liba', 'libb') );
    
    因为你不包括

    $CI =& get_instance(); 
    

    控制器内是控制器文件夹中的文件。如果是,则可能没有正确扩展控制器。 比如:

    否则您需要使用
    $CI=&get_instance()在您的文件中
    然后使用

    $CI->load->library('your_library');
    
    编辑:
    注意:检查您的库文件在您的文件夹结构中是否大写,如
    Libb.php

    每当您使用库和帮助程序并且需要CI中的内置方法时,请使用

    $CI =& get_instance();
    
    然后像这样使用它

    $CI->load->helper('url');
    $CI->load->library('session'); 
    $CI->config->item('base_url');  //...etc
    
    有关更多信息,请参阅


    或者,为了获得更好的解决方案,您可以使用codeigniter+HMVC从另一个控制器调用控制器,避免任何冲突并简化故障排除,请参阅


    干杯

    我认为你们图书馆的问题在于图书馆馆藏,而不是他们。为代码交换加载一些库是正常的(先加载libb,然后加载liba)。libb加载成功,但liba没有。好的,如果两个库都在调用其他控制器,您将遇到问题,请使用$CI=&get_instance();在库内部,而不是$this->xxx->yyy(),然后像这样调用您的实例:$your_variable=$CI->xxx->yyy()。每当您使用库并且需要来自CI的内置方法时,请使用$CI=&get_instance();然后像这样使用$CI->load->helper('url')$CI->load->library(“会话”)$CI->config->item('base_url');等有关更多信息,请参阅尝试使用著名的php方法,看看它是否有效$result_a=new liba(),$result_b=new libb(),然后查看它是否如您所期望的那样工作,如果没有,那么您的代码一定有问题。。我的错误。我确实通过了阵列。。没用。让我编辑我的问题。图书馆里有问题。与其打电话给图书馆,不如查一下你的图书馆代码。我想是的,就像我说的:)@saty。如果我只加载其中一个库。我确实得到了结果。@saty$CI=&get_instance();-为什么?是,我的控制器在控制器文件夹中。我已将控制器扩展到CI_控制器。我还使用了get_instance()。带或不带失败如果它在您的控制器文件夹中,您不必使用$CI=&get_instance();您可以简单地使用$this->load->library('xyz')是的,我知道。就像我说的。它不起作用,我所有的文件都是这样的。而且类名是“像这样”谢谢Nassim。我现在已经转到其他项目。我回来后一定会试试你的建议。谢谢!感谢您的回复,HMVC看起来非常适合我的下一个项目,但我当前的项目是MVC CodeIgniter风格的。HMVC要求我将整个项目更改为模块??如果是的话,那就是大量的返工。我只需要能够从一个控制器的5-6个不同的php文件中调用每个函数。php文件现在是控制器,但我可以灵活地将其变成一个库等。是否可以使用HMVC而不进行太多的代码重组?好的,我正在使用codeigniter进行一个大项目,仅使用MVC,让我告诉你,我可以在大约1小时内将所有代码从MVC移动到HMVC,因为当您将控制器移动到模块时,您也可以将它们的库移动到同一模块下,所以您不会丢失任何东西,相反,它只会获得灵活性。如果你没有使用codeigniter3(像我一样),你可以跟随这个视频开始,然后跟随这个视频你会有一个问题,但这是如何修复codeigniter 2.x的问题昨天在这个问题上有了突破。问题是库的输出不好。我已经解决了这个问题,现在我可以正常加载多个库,就像我在问题中描述的那样。然而。。。为了使用内置函数,我还必须在库中使用$CI=&getInstance。因此,如果你把它作为答案(我对这个问题的最新评论)发表,我会接受。
    $CI =& get_instance(); 
    
    myController extends CI_Controller{}
    
    $CI->load->library('your_library');
    
    $CI =& get_instance();
    
    $CI->load->helper('url');
    $CI->load->library('session'); 
    $CI->config->item('base_url');  //...etc