正确的CodeIgniter命名结构

时间:2013-06-06 19:42:30

标签: 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');
}

好吧我在这里迷茫,在第4行:

$this->load->model('Companymodel');

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

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

调用控制器并建模相同的

是不好的做法

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

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

2 个答案:

答案 0 :(得分:40)

网址

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

控制器

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

  • 如果您的网址为www.example.com/gallery,则控制器名称为Gallery
  • 如果您的网址为www.example.com/admin_folder,则控制器名称为Admin_folder

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

  • 图库:: gallery.php
  • Admin_folder :: admin_folder.php

控制器方法也应全部小写。大写具有一定的灵活性,但与URL类似,有可能出现问题(here's an example大写字母干扰表单验证回调方法)。

模型

模型遵循大多数与控制器相同的约定。唯一的区别是模型方法名称,它可以使用您的首选大小。由于这些方法与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/coreapplication/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 3.0到better and add more consistency to naming conventions的讨论,如果你愿意的话,你可以阅读并做出贡献。

答案 1 :(得分:1)

模型/ admin.php的

<?php

class Admin extends CI_Model {
...etc

控制器/ company.php 将包含管理模型

function galleryView()
{
    $this->load->model('Admin');

    $numRows = $this->Admin->getPhotoNum();
... etc

要浏览到galleryView,网址将为mysite.com/company/galleryView

CodeIgniter网站上有非常好的文档和示例