正确的CodeIgniter命名结构

bne*_*jax 11 codeigniter

我正在开始我的第一个CodeIgniter项目,并希望在开始之前得到一些建议.我对控制器和模型的名称如何工作有点困惑.

如果我希望我的公司页面的网址是http://example.com/Company/view

控制器需要被称为Company.php正确吗?在公司控制器内部,它看起来像这样:

public function viewAll()
{
    $this->load->model('Companymodel');
    $this->load->view('templates/header');
    $data['result'] = $this->Companymodel->viewAll();
    $this->load->view('company/viewAll', $data);
    $this->load->view('templates/footer');
}
Run Code Online (Sandbox Code Playgroud)

好吧我在这里困惑,在上面的第4行:

$this->load->model('Companymodel');
Run Code Online (Sandbox Code Playgroud)

这个对公司模型页面的调用需要有第一个字母的资本,其余的是小写吗?

如果这是正确的,模型文件是否需要被称为Companymodel.php并放在application/models文件夹中?

调用控制器并对其进行建模是不好的做法

示例:Company.php并将其放在/ application/controller /中,然后将模型称为Company.php并将其放在应用程序/模型中,或者将模型称为Companymodel.php

我想我的最终问题是控制器和模型文件的命名约定,以及它们是否可以是大写.

Ake*_*rts 44

网址

您的网址通常应为全小写字母.如果您希望使用大写字母,那么即使它们是相同的URL,您也可能会意外地排除它们的小写字母.例:www.example.com/controller/method/param

控制器

控制器类名称应全部小写,但第一个字母除外.

  • 如果您的URL是www.example.com/gallery,控制器名称是Gallery.
  • 如果您的URL是www.example.com/admin_folder,控制器名称是Admin_folder.

控制器文件名应与类名匹配,但全部为小写.

  • 画廊:: gallery.php
  • Admin_folder :: admin_folder.php

控制器方法也应该全部小写.大写有一些灵活性,但与URL类似,有机会可以解决问题(这里是大写字母干扰表单验证回调方法的例子).

楷模

模型遵循与控制器大多数相同的约定.唯一的区别是模型方法名称,它可以使用您的首选大小.由于这些方法与URL无关,并且使用普通的PHP OOP调用,因此您可以根据需要为其命名.

建议使用全小写版本加载模型.虽然CI不需要它,但如果用一个大写字母加载它会使一些用户感到困惑,但是然后尝试以全小写形式访问它(这是因为本机PHP对类属性[和一般的变量]区分大小写) ,而不是CodeIgniter).

  • 型号类别名称:Users_model(该_model后缀也并不是必需的,但有些人可能使用它作为一个个人喜好,或防止与命名冲突Users控制器).
  • 型号文件名: users_model.php
  • 型号装载: $this->load->model('users_model')
  • 模型方法名(不是一切正常): ,$this->users->getAll(),$this->users->find_by_name($name)等.

图书馆

除文件名外,库遵循相同的约定.在他们的例子中,文件名应该与类名匹配.

与模型类似,建议使用小写名称加载库.

这些规则对于CI的库(位于application/core和application/libraries,以及自定义或第三方库中)是相同的.

特别说明:扩展默认CI库时,定义的前缀application/config.php开始起作用.此前缀通常应全部为大写,后跟下划线.默认是MY_.

  • 库类名: Photos
  • 库文件名:Photos.php,
  • 库加载: $this->load->library('photos')

助手

帮助程序名称和加载都是小写的.文件名由辅助名称和_helper附加的后缀组成.

  • 助手名称: url
  • 助手文件名: url_helper.php
  • 辅助负载: $this->load->helper('url')

笔记

CodeIgniter的命名约定有些不一致,但确实没有太多规则,所以它们很容易习惯和记忆.我很少在CI中命名和加载时遇到问题,当我这样做时,通常是因为我只是在编写与Composer相关的项目,所以我养成了不同的习惯.

在撰写本文时,本答案中的规则适用于CodeIgniter 2.1.x. 讨论Github for 3.0以更好地为命名约定添加更多的一致性,如果你愿意,你可以阅读和贡献.