CodeIgniter中的自定义控制器

时间:2013-01-27 08:04:58

标签: php codeigniter directory-structure

我不知道这是否重复,我找不到任何东西。对不起。

好吧,所以我做了几个这样的课程:

abstract class Bank(){}
class HB extends Bank(){}
class NO extends Bank(){}
class BankController(){}
class Contract(){}

我正在使用它们:

$contract  = new Contract();
$bank      = new HB();
$bankC     = new BankController($bank);
$bankC->setContract($contract)->processContract()->sendRequest();

我的问题是,我在哪里放置BankController?因为我不想把它们放在控制器文件夹中,因为我不想通过URL访问它们。 你们会做什么?或者你是否创建了一个新文件夹?

2 个答案:

答案 0 :(得分:1)

您可以通过使用下划线启动名称来使控制器功能变为私有。 因此,例如,如果您将它放在控制器文件夹中但是_Contract不会,则可以访问Contract。如果您可能需要一天,您仍然可以在控制器文件中使用它。

答案 1 :(得分:1)

您可以创建自定义核心控制器:

http://ellislab.com/codeigniter/user-guide/general/core_classes.html

如果你不想在网址上创建一个库,那么你可以创建一个库:

http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html

在application / libraries目录下创建一个 bank.php

或者你可以创建一个像bankfolder / bank.php

这样的文件夹
class bank()
{

  public function setContract()
  {
     //
  }

  public function processContract()
  {
    //
  }

  public function sendRequest()
  {
    //
  }

}

然后在HB COntroller上

class HB extends CI_Controller
{
  public function __construct(){
    parent::__construct();
    $this->load->library('bankfolder/bank');
  }

  public function index()
  {
    $this->bank->setContract($contract)->processContract()->sendRequest();
  }

}

这只是一个示例而非您的工作代码