我正在尝试找出,在codeigniter中控制器/模型/库命名约定的最佳实践是什么。
为了简化,我将在PayPal示例中解释该问题。要求是在URL中设置控制器名称(在本例中为关键字paypal)。
控制器将 paypal.php
模型将 paypal_model.php
库将 Paypal_lib.php
这种方法存在两个问题:
控制器几乎从未被其名称调用。另一方面,模型由整个项目的名称调用。这意味着,我最终将使用 $ this-> paypal_model-> doSomething()而不是更清洁的方式 - $ this-> paypal-> doSomething(或$ this-> user-> getEmail等...)有两个选项如何实现结果,但我不会称之为最佳实践:
将控制器(文件和类)命名为paypal_controller.php,并为其创建路径($ route ['paypal'] ='paypal_controller')。你可以想象当你在该控制器中有几个函数/ w参数时,事情会变得复杂。为了保持一致,所有控制器都应该以这种方式进行路由。
重写codeigniter系统目录中的逻辑(我不确定系统目录中这个更改文件是否好主意)
库存在类似问题。为每个库添加后缀都有效,但它与系统库不一致($ this-> pagination-> create_links()vs $ this-> paypal_lib-> create_links())
我不确定是否有解决方案,或者它只是一个codeigniter“限制”。
答案 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";
它们是最常见的。另外请看用户指南非常有用的指导用户指南。