我正在开始我的第一个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
我想我的最终问题是控制器和模型文件的命名约定,以及它们是否可以是大写。
答案 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.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/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 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网站上有非常好的文档和示例