Codeigniter控制器/模型/库命名


Codeigniter controller / model / library naming

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

为了简化,我将用PayPal的例子来解释这个问题。要求是有控制器名称(在这种情况下的关键字paypal)在URL。

控制器

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')。你可以想象当控制器中有几个函数/参数时事情会变得多么复杂。为了保持一致,你所有的控制器都应该这样路由。

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

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

我不确定是否有解决方案,或者它只是一个编码"限制"。

在加载模型时,你可以给模型一个替代名称,然后在控制器中使用这个名称进行函数调用。像这样。模型名称为payapel_model.php$ this ->加载>模型("payapel_model"、"贝宝");然后调用for函数$ this ->贝宝-> doSomething ();

控制器你可以使用大写字母像这样Your_controller.phpYour_controller.php两种方式都是可以的lib文件是相同的,但更喜欢大写模型要么mdl_yournamemodel_yourname。HMVC非常有用。

如果从文件夹

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

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

确保在模型中添加了word mdl或model。因为有时候codeigniter会搞混。

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

它们是最常见的。看一下用户指南,非常有帮助