我正试图找出,什么是最佳实践控制器/模型/库命名约定在codeigniter。
为了简化,我将用PayPal的例子来解释这个问题。要求是有控制器名称(在这种情况下的关键字paypal)在URL。
控制器将 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')。你可以想象当控制器中有几个函数/参数时事情会变得多么复杂。为了保持一致,你所有的控制器都应该这样路由。
在codeigniter系统目录中重写逻辑(我不确定在系统目录中更改文件是否是个好主意)
库也有类似的问题。为每个库添加后缀是有效的,但它与系统库不一致($this->pagination->create_links() vs $this->paypal_lib->create_links())
我不确定是否有解决方案,或者它只是一个编码"限制"。
在加载模型时,你可以给模型一个替代名称,然后在控制器中使用这个名称进行函数调用。像这样。模型名称为payapel_model.php$ this ->加载>模型("payapel_model"、"贝宝");然后调用for函数$ this ->贝宝-> doSomething ();
控制器你可以使用大写字母像这样Your_controller.php或Your_controller.php两种方式都是可以的lib文件是相同的,但更喜欢大写模型要么mdl_yourname或model_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";
它们是最常见的。看一下用户指南,非常有帮助