Codeigniter控制器/模型/库命名

时间:2014-05-24 14:17:37

标签: php codeigniter

我正在尝试找出,在codeigniter中控制器/模型/库命名约定的最佳实践是什么。

为了简化,我将在PayPal示例中解释该问题。要求是在URL中设置控制器名称(在本例中为关键字paypal)。

控制器 paypal.php

模型 paypal_model.php

Paypal_lib.php

这种方法存在两个问题:

  1. 控制器几乎从未被其名称调用。另一方面,模型由整个项目的名称调用。这意味着,我最终将使用 $ this-> paypal_model-> doSomething()而不是更清洁的方式 - $ this-> paypal-> doSomething(或$ this-> user-> getEmail等...)有两个选项如何实现结果,但我不会称之为最佳实践:

    • 将控制器(文件和类)命名为paypal_controller.php,并为其创建路径($ route ['paypal'] ='paypal_controller')。你可以想象当你在该控制器中有几个函数/ w参数时,事情会变得复杂。为了保持一致,所有控制器都应该以这种方式进行路由。

    • 重写codeigniter系统目录中的逻辑(我不确定系统目录中这个更改文件是否好主意)

  2. 库存在类似问题。为每个库添加后缀都有效,但它与系统库不一致($ this-> pagination-> create_links()vs $ this-> paypal_lib-> create_links())

  3. 我不确定是否有解决方案,或者它只是一个codeigniter“限制”。

2 个答案:

答案 0 :(得分:3)

对于加载时的模型,您可以为模型指定替代名称,然后在控制器中使用此名称进行函数调用..就像这样。 型号名称为payapel_model.php                               $这 - >负载>模型(' payapel_model''贝宝&#39);                             然后当呼吁功能                                 $这 - > paypal-> doSomething的();

答案 1 :(得分:1)

控制器你可以使用大写字母,如 Your_controller.php your_controller.php ,无论哪种方式都适用于lib文件是相同的但更喜欢大写的模型 mdl_yourname model_yourname 。 HMVC非常有用。

如果您从文件夹

调用模型
$this->load->model('payment/paypal_model');
$this->model_paypal->yourfunction();

$this->load->model('payment/mdl_paypal');
$this->mdl_paypal->yourfunction();

确保在模型中添加单词mdl或模型。因为有时候codeigniter会感到困惑。

$route['paymentwhatever'] = "folder/payment_paypal/index";
$route['paymentwhatever'] = "folder/payment_paypal/yourfunction";

它们是最常见的。另外请看用户指南非常有用的指导用户指南。