避免CodeIgniter中的_model后缀

时间:2012-10-20 18:44:41

标签: php codeigniter codeigniter-2 codeigniter-url

如果你像我一样,你认为CodeIgniter非常好。每次加载或调用模型中的方法或属性时,您也可能不喜欢键入_model,因为它很丑陋且耗时。

我一直在寻找一个没有运气的解决方案,所以我快速解决了这个问题。

2 个答案:

答案 0 :(得分:3)

查看loader class documentation

假设你有一个名为page_model的类,你通常会像这样加载和使用它:

$this->load->model('page_model'); 
$this->page_model->function();`

如果您希望每次都能避免输入_model:

$this->load->model('page_model', 'page');    
$this->page->function();

当我第一次开始使用CodeIgniter时,我总是这样做。现在使用CI几年和一些网站后,我很遗憾这个决定。

在查看代码时,很难分辨出发生了什么。将_model作为调用模型函数的代码的一部分可以消除任何歧义。例如,在上面的函数中,调用是页面库还是模型?

答案 1 :(得分:1)

这是因为CodeIgniter不支持名称空间。虽然CI中有discussions of namespace support一段时间,但股票代码库中的支持仍然存在。

解决方案?改为修改你的控制器!在典型用法中,您不太可能需要为每个文件多次键入控制器的名称。

首先编辑应用程序/配置/路由,并在所有其他路径之后添加以下行

$route['(:any)'] = "c_$1";

使用此规则,您可以使用前缀将URI的第一个段路由到匹配的控制器。那样:

http://www.domain.com/fishsticks

映射到以下控制器:

c_fishsticks

接下来,使用此前缀重命名控制器文件,并更改内部的类名以匹配。

就是这样!现在,您可以相对自由地命名模型。您可以随意重命名模型,但不要忘记您需要更改每个模型的文件名,每个模型的类名,以及所有引用到每个模型。这是最耗时的步骤,但从好的方面来说,您不必一次完成所有操作。