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 的正确命名结构 的相关文章

  • 为什么呼叫会话不起作用? (代码点火器 3)

    我的配置是这样的 config sess driver database select database driver config sess save path ci sessions name of the mysql table co
  • 解释一下 $CI =& get_instance();

    查看codeigniter的源代码 在它的辅助函数中我不断看到代码 CI get instance 谁能向我解释一下这段代码是如何工作的 我知道它正在返回对 CI 超级对象的引用 但是在哪里get instance 来自 这基本上是一个单例
  • 如何正确转义 mysql“搜索/喜欢”查询?

    Summary 我目前正在使用 search field LIKE this gt db gt escape like str search string 逃避动态创建的搜索查询 创建的 SQL 语句结果不会产生任何错误 也不会产生任何结果
  • 在选择选项标签中循环 Ajax 响应

    我必须选择多个测试和日期 当根据测试单击提交时 实验室名称将加载到选择选项中 阿贾克斯脚本 name submits click function e e preventDefault var array select selected e
  • CodeIgniter Active Record - 组 OR 语句

    这是我的问题 MySQL 或 条件 https stackoverflow com questions 8604380 mysql or condition 解决方案是将 OR 语句分组 但我正在使用 CodeIgniters Active
  • CKEditor TypeError:c[a] 在 CodeIgniter 中未定义

    我正在尝试在基于 codeigniter 的网站中安装 CKEditor 并且我已按照本教程进行操作 Codeigniter 教程中的 CKEditor http nukium com developpement php framework
  • Codeigniter 处理大文件时允许的内存大小耗尽

    我发布此内容是为了防止其他人正在寻找相同的解决方案 因为我刚刚在这个废话上浪费了两天时间 我有一个 cron 作业 每天使用一个非常大的文件更新数据库一次 使用以下代码 if handle fopen dirname FILE uncomp
  • codeigniter,获取mysql表列中的最大值

    我正在使用 codeigniter 2 我有一个 mysql 表列 存储每个学生所用的时间 例如 1 2327 0 6547 1 9876 我想获得最大值 值该列 这是我的代码 this gt db gt select max time t
  • 如何在 CodeIgniter 中加载类/库?

    我有一个图书馆叫lib 其中包含一个名为nusoap php 我已经将lib放入文件夹中应用程序 库 当我尝试加载它时 出现以下错误 An Error Was Encountered Unable to load the requested
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • Codeigniter - 出现 404 Not Found 错误

    我们在 godaddy 有两个托管套餐 我们的实时网站使用以下 htaccess 文件运行良好 无需在 url 中使用 index php 即可访问网站 RewriteEngine On RewriteCond REQUEST FILENA
  • Codeigniter:Base_url 似乎不起作用

    我开发了一个简单的网站 可以从 Twitter 公共时间线获取推文 将其缓存 60 秒等等 我最近将主机从 Hostgator 移至 Mediatemple 我的网站之前在 Hostgator 上运行良好 我的应用程序不使用数据库连接 也不
  • dayname(curdate()) 不适用于 codeigniter php

    此 sql 在 phpmyadmin 中有效 但在 codeigniter php 中无效 function getProgramsHomepage data array this gt db gt select p name p star
  • Codeigniter PHP - 在锚点加载视图

    我在一个长页面的底部有一个表单 如果用户填写了表单但它不验证页面是否以典型的 codeigniter 方式重新加载 this gt load gt view template data 然而 由于表单位于页面底部 我需要将页面加载到那里 就
  • 如何删除Wamp中的index.php?

    我一直在 XAMPP 中使用 CodeIgniter 重定向到函数 URL 没有问题 例如 功能1 http localhost function1 当我换成WAMP时 我遇到了问题 我无法重定向到功能1 然而 功能1仍可在以下位置访问 h
  • Codeigniter 中的多个查询[重复]

    这个问题在这里已经有答案了 可能的重复 MYSQL在codeigniter中多次插入 https stackoverflow com questions 2790638 mysql multiple insert in codeignite
  • codeigniter 动态表单输入名称的表单验证

    我有一个 codeigniter 应用程序 我的视图使用数据库行 ID 附加到输入名称以获取唯一 ID 这允许我在表单操作 即更新 中使用所有输入 我的视图语法 table tr th nbsp th th nbsp th th Custo
  • 如何解决错误:消息:fsockopen():无法连接到 ssl://smtp.gmail.com:465(连接被拒绝)

    我在用着代码点火器我创建了一个电子邮件功能来将电子邮件发送到特定的电子邮件 ID public function email email config protocol smtp config smtp host ssl smtp gmai
  • 在 Codeigniter 中从其他数据库切换动态数据库

    mi 文件 config php 是 active group default active record TRUE db master 是唯一的数据库 db master hostname localhost db master user
  • CodeIgniter 控制器构造函数

    我对 codeigniter 很陌生 我想知道控制器中构造函数的含义是什么 我在 codeigniter 教程中看到以下代码 class upload extends CI Controller function construct par

随机推荐