【问题标题】:Codeigniter library Loader fail when more than oneCodeigniter 库加载器在多个时失败
【发布时间】:2014-09-15 11:37:16
【问题描述】:

我正在尝试使用 Codeigniter Loader 来加载库

$this->load->library();

当我加载多个时它会失败。

application\controllers\news.php

<?php

class News extends CI_Controller {

    public function aa() {
        echo 'this is aa.<br>';
        $this->load->library('bb');
        $this->load->library('cc');   
        $this->bb->call();  // This work fine.
        $this->cc->call();  // This will show php error.
    }

}

?>

application\libraries\Bb.php

<?

class Bb extends CI_Controller {

    public function __construct(){
        parent::__construct();
        echo 'bb constructed.<br>';
    }

    public function call(){
        echo 'bb function called.<br>';
    }


}

?>

application\libraries\Cc.php

<?  

class Cc extends CI_Controller {

    public function __construct(){
        parent::__construct();
        echo 'cc constructed.<br>';
    }

    public function call(){
        echo 'cc function called.<br>';
    }
}

?>

这是一些屏幕截图:

Codeigniter 版本:2.2.0

PHP 版本:5.2.6

【问题讨论】:

    标签: php codeigniter loader


    【解决方案1】:

    在您自己的库中,您不需要扩展到您的控制器类,因此您可以像这样更改您自己的库:

      <?php
      class Bb  {
        function call()
        {
        return 'Bb function called.<br>';
        }
      }
      ?>
    

    还有你的抄送库:

      <?php
      class Cc  {
        function call()
        {
        return 'Cc function called.<br>';
        }
      }
      ?>
    

    在控制器中您可以轻松:

      echo $this->bb->call();
      echo $this->cc->call();exit;
    

    或其他一切都取决于您的库函数。

    【讨论】:

    • 如果我不使用 HMVC 扩展,这是否意味着我无法加载控制器类?还是在我的应用程序中使用多个控制器不是一个好习惯?
    • 为什么你会在你的应用程序中使用超过 1 个控制器?要扩展应用程序的功能(如用户、语言等),请使用库。您可以使用引用将当前控制器加载到您的library 中,例如this
    • 也许我是 MCV 新手,我想拥有一个主控制器,它将与我网站中的其他组件控制器一起使用,例如搜索输入、购物图表。甚至可能是 MainMenu 的控制器,以及广告横幅的控制器。
    猜你喜欢
    • 2015-07-16
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2015-12-27
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多