Codeigniter模型/控制器功能结构

时间:2019-03-18 17:44:02

标签: php codeigniter

我已经在Google上搜索了很多次,无论我怎么说Google搜索,我都不会得到可以回答我问题的结果。这困扰了我几个月。我还尝试查看示例代码点火器项目,以查看其结构如何构成项目,但其中大多数不是“完整”项目,并且大多只是项目的一部分或令人困惑。

比方说,我有一个配置文件控制器,其中所有用于配置文件的功能都已完成。(用户和商品配置文件)。

配置文件控制器:

public function my_user_profile(){
//access profile of logged on user
//needs user authentication
}

public function user_profile(){
//access profile of other users
}

public function item_profile(){
//access profile of item
}

将访问层次结构添加到项目时会出现问题,因为某些功能需要用户登录,例如,my_user_profile函数正在访问您的配置文件,因此需要登录。

其他功能是公共的,在这些功能中,他们不需要登录的用户即可访问,例如查看其他人的个人资料和项目个人资料(这是公共的-就像在Amazon中,即使我未登录,我也可以在那里查看项目,或者在facebook中我无需登录即可查看其他人的基本个人资料。

即使我将其划分为两个名为user_controller的控制器(其中所有与用户相关的功能均属于其中)和item_controller(所有项相关的功能均属于其中)。

但是,并非所有功能都需要用户登录,因此我将不得不分开这些功能。

这也适用于模型,因为它们反映了我的控制器(user_controller通常会在user_model上调用item_controller到item_model)。

我唯一想到的就是将控制器分为两个子文件夹,即公用文件夹和专用文件夹(如果以后再添加管理员,还将创建一个管理员文件夹)

其中带有控制器的公用文件夹将具有不需要用户身份验证的功能。

带有控制器的私人文件夹需要进行用户身份验证,否则将重定向到登录页面。

可能是带有需要登录管理员帐户的控制器的管理员文件夹。

当然名称保持不变,例如:

  1. controllers / public / user_profile.php

  2. controllers / private / user_profile.php

此结构正确吗?在代码点火器中是否存在公认的标准结构?

1 个答案:

答案 0 :(得分:1)

使用这种结构可能不会有问题,只需确保在route.php文件中调用所需的内容即可。

我在控制器中具有类似的结构,并且可以正常工作:

/controllers/controller1.php
/controllers/controller2.php
/controllers/controller3.php
/controllers/logged/controller1.php
/controllers/logged/controller2.php
/controllers/logged/controller3.php
/controllers/admin/controller1.php
/controllers/admin/controller2.php
/controllers/admin/controller3.php

控制器文件夹中的文件是公共的,日志文件夹中的文件需要登录,而管理员文件中的文件则需要特殊登录。有一些通用名称,如果正确设置路由,就没有问题