CodeIgniter 的正确命名结构

2024-02-16

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

如果我希望我的公司页面的网址为http://example.com/Company/view 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

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


URLs

您的 URL 通常应全部为小写字母。如果您期望使用大写字母,则您有可能会意外排除它们的小写字母,即使它们是相同的 URL。例子:www.example.com/controller/method/param

控制器

控制器类名除首字母外应全部小写。

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

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

  • 画廊::gallery.php
  • 管理文件夹::admin_folder.php

控制器方法也应该全部小写。大写字母有一定的灵活性,但与 URL 类似,有可能会出现问题(这是一个例子 https://stackoverflow.com/questions/16738179/codeigniter-2-callback-function-in-my-controller其中大写字母会干扰表单验证回调方法)。

Models

模型遵循与控制器相同的大部分约定。唯一的区别是模型方法名称,它可以使用您偏好的大小写。由于这些方法不依赖于 URL,并且使用普通的 PHP OOP 进行调用,因此您可以随意命名它们。

建议使用全小写版本加载模型。虽然 CI 不要求这样做,但如果某些用户使用大写字母加载它,然后尝试以全小写形式访问它,则可能会让某些用户感到困惑(这是由于本机 PHP 对类属性 [和一般变量] 区分大小写) ,而不是 CodeIgniter)。

  • 模型类名:Users_model (the _model后缀也不是必需的,但有些人可能会将其用作个人喜好,或者防止与Users控制器)。
  • 模型文件名:users_model.php
  • 模型加载:$this->load->model('users_model')
  • 模型方法名称(都可以):$this->users->getAll(), $this->users->find_by_name($name), etc.

图书馆

图书馆遵循相同的约定except为文件名。在他们的例子中,文件名应该与类名匹配。

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

这些规则对于 CI 的库是相同的(位于application/core and application/libraries以及自定义或第三方库。

特别提示:扩展默认 CI 库时,前缀定义在application/config.php发挥作用。此前缀通常应全部大写,后跟下划线。默认为MY_.

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

Helpers

助手名称和加载全部小写。文件名由助手名称和_helper后附。

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

Notes

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

本答案中的规则适用于撰写本文时的 CodeIgniter 2.1.x。 Github 上有关于 3.0 的讨论更好并增加命名约定的一致性 https://github.com/EllisLab/CodeIgniter/issues/1805,如果您愿意,您可以阅读并做出贡献。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CodeIgniter 的正确命名结构 的相关文章

  • dayname(curdate()) 不适用于 codeigniter php

    此 sql 在 phpmyadmin 中有效 但在 codeigniter php 中无效 function getProgramsHomepage data array this gt db gt select p name p star
  • 如何使用 Codeigniter 从另一个视图中加载视图文件,而无需通过控制器?

    我正在努力寻找此问题的解决方案 我需要从另一个视图中加载视图 我知道 通常我只需要这样做 但这一次 文件路径被传递到数据文件标记的属性 我有 a href 实际上 这是由 JavaScript 函数用来自行加载视图的 因此 当这样做时 它会
  • Codeigniter:使用数据网格

    我正在寻找使用 CI 实现数据网格 如果使用 ajax 会更好 在Google上搜索我发现了很多关于如何使用的教程和讨论Flexigrid 4 CI or jqGrid 无论如何 我仍然对哪一个可以提供更大的灵活性感到困惑 例如 是否可以设
  • 在 Codeigniter 中显示来自连接的数据

    我正在使用简单的联接从两个数据库中提取数据 这是模型中的连接 function com control this gt db gt select this gt db gt from comments this gt db gt join
  • mysql 数据库更新和 codeigniter 行受影响的功能[重复]

    这个问题在这里已经有答案了 我在更新查询后使用此功能此 codeigniter 功能 this gt db gt affected rows 如果我更新值 它会返回受影响的行数 但如果我更新与之前相同的值 它会返回 0 受影响的行 任何帮助
  • 定义根路径

    我正在寻找一种将配置变量定义为我的网站的根路径的方法 定义这个的最好方法是什么 我正在使用 Codeigniter config root path 这是我的 config 文件夹中的 site config 文件 dev dev appl
  • CodeIgniter 2.1.0 的会话库中是否存在任何已知错误?为什么我会被踢出去? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在开发
  • 控制器 HMVC 内的 CodeIgniter 负载控制器

    我在用着http github com philsturgeon codeigniter template http github com philsturgeon codeigniter template 对于模板 我尝试将其他控制器视图
  • 我可以在 CodeIgniter 中使用 MySQLi 和 PHP5 语法吗?

    我正在开始一个新的网络项目 我想我应该尝试使用一个框架 我知道 CodeIgniter 是用 PHP4 编码的 但是在使用 CodeIgniter 编码时 我是否能够使用 MySQL 的 MySQLi 函数以及 PHP5 语法 特别是涉及
  • CodeIgniter加入选择为

    我的数据库中有 2 个表需要加入 一张表是 artikelen 表 另一张表是 Collections 表 我目前有 this gt db gt select this gt db gt from collecties this gt db
  • 代码点火器 JSON

    你好 我使用 codeigniter 然后我从控制器中的数据库中回显输出 然后在我的视图文件中执行以下操作 但它没有显示任何内容 S 我的模型文件 function forumList this gt db gt select oversk
  • CSS 无法与 CodeIgniter 一起使用

    这是我的 CI 代码的一部分 class page extends CI Controller var Page public function construct parent construct this gt Page 1 this
  • 使用 CodeIgniter 加载视图文件夹外的视图

    我需要从以下范围之外加载视图 this gt load gt view 这似乎是从base application views目录 如何从外部访问视图 application 目录 我想我将不得不延长CI Loader class这是最好的
  • Codeigniter - CMS 的最佳路由配置?

    我想在 Codeigniter 中创建一个自定义 CMS 并且我需要一种将常规页面路由到默认控制器的机制 例如 mydomain com about mydomain com services maintenance 这些将通过我的页面处理
  • 无法使用 PHP mail() 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件

    我尝试使用 codeigniter 框架发送邮件 但它会引发错误 无法使用 PHP mail 发送电子邮件 您的服务器可能未配置为使用此方法发送邮件 From prakash t lt email protected cdn cgi l e
  • 如何创建不覆盖其他控制器路由的 Codeigniter 路由?

    我的 Codeigniter 应用程序中有很多控制器 例如 注册 个人资料 主要等 现在我想建立 User 控制器 我想要的是 如果人们访问网址 example com signup 我想使用默认路由到 Signup 控制器 如果人们访问网
  • Razorpay 支付集成 -> 我如何检测关闭按钮 X 附近的 razorpay 模型

    我在 CI 框架中使用 Razorpay 当用户在没有付款的情况下关闭时 创建 razor 支付模型 然后对于取消订单 我希望通过状态更改为已取消来触发查询 那么我怎样才能检测到这一点 我已经在使用 by click jQuery 点击关闭
  • CodeIgniter MultiDatabse 连接错误

    我在CodeIgniter中看到很多连接多数据库的方法 教程 离我还很遥远 有人提供我在 CI 中连接多个数据库 这是我在博客中找到的使用方式 抱歉 我不认识博客地址 active group default active record T
  • Codeigniter 在每次页面加载时创建新会话

    我使用 codeigniter 2 1 0 为客户开发电子商务网站 该网站已经运行了大约 3 个月 然后突然登录不粘 会话数据未设置 我检查了数据库 发现每次页面加载时都会创建一个新会话 这是我的配置值 config sess cookie
  • Codeigniter:重置表单值

    在我看来 我想要做的是在用户成功注册后清除表单字段 这里一切正常 即用户正在注册 成功消息正在向用户显示 除了我想要做的是清除表单字段的值 我正在使用这个 Clear the form validation field data so th

随机推荐