如何访问CI HMVC中的库?

时间:2017-03-11 18:49:35

标签: php codeigniter codeigniter-3 hmvc codeigniter-hmvc

我目前的控制器&图书馆列于......

>application/
 - config/
 - controllers/
 - ...
 - models/
 - modules/
   - module1/
     - controllers/
       - Test_cont.php
     - models/
     - views/
     - libraries
       - Test_lib.php
 - third_party/
 - views/
 - ...(other files & folders)

'modules / module1 / controllers / Test_cont.php'是:

class Test_cont extends MY_Controller
{
  function __construct(){
    parent::__construct();
  }

  function index(){
    $this->load->library('Test_lib');
    $this->Test_lib->doSomething();
  }
}

'modules / module1 / libraries / Test_lib.php'文件是:

class Test_lib
{
  function __construct(){
    echo 'library loaded <br>';
  }

  function doSomething(){
    echo 'it works!';
  }
}

当我转到网址“http://localhost/codeigniter-3.1.3/module1/test_cont”时 它说:

---------------------------------------------------
| An Error Was Encountered                        |
---------------------------------------------------
| Unable to load the requested class: Test        |
---------------------------------------------------

我希望我能让你理解我的问题,如何解决这个问题?... (提前致谢)

4 个答案:

答案 0 :(得分:2)

库名称不区分大小写。对象实例总是小写的。

请参阅creating libraries

function index(){
   $this->load->library('Test_lib');
   $this->test_lib->doSomething();
}

答案 1 :(得分:0)

在hmvc中,您需要在加载库,模型等时包含模块名称。

function index(){
   // You don't need to use upper case when loading library only class and filename

   $this->load->library('module-name/test_lib');
   $this->test_lib->doSomething();

   // Loading model hmvc

   $this->load->model('module-name/test_model');
   $this->test_model->doSomething();
}

控制器,如果没有application / core / MY_Controller.php使用MX_Controller

文件名Test_cont.php

class Test_cont extends MY_Controller
{

}
  

如果您需要使用MY_controller,请确保在application / core / MY_Controller.php中执行此操作

<?php

class MY_Controller extends MX_Controller {

}

答案 2 :(得分:0)

最后我发现脚本里面有一个错误所以我虽然加载了库有任何问题,但我的库加载了:

$this->load->library('Test_lib');

答案 3 :(得分:0)

如果你在同一个模块中,那么你可以像这样加载库:

function index(){
   $this->load->library('Test_lib');
   $this->test_lib->doSomething();
}

但是如果你在不同的模块中并且想要从不同的模块加载库,那么:

function index(){
   $this->load->library('module_name/Test_lib');
   $this->test_lib->doSomething();
}