0

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

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

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 访问它们。你们会怎么做?或者你创建一个新文件夹?

4

2 回答 2

1

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

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

或者,如果您不希望它出现在 url 上,您可以创建一个库:

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

在应用程序/库目录上创建一个 bank.php

或者你可以创建一个像 bankfolder/bank.php 这样的文件夹

class bank()
{

  public function setContract()
  {
     //
  }

  public function processContract()
  {
    //
  }

  public function sendRequest()
  {
    //
  }

}

然后在 HB 控制器上

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

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

}

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

于 2013-01-27T08:34:06.757 回答
1

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

于 2013-01-27T08:20:17.187 回答