我正在使用CodeIgniter和Ion auth开发一个小型web应用程序。该应用程序有3种不同类型的用户:
- admin:添加、列出全部、查询项、删除项;
- 作者:add, list all, consult;
- 普通用户:列出全部,查阅;
(假设它们是新闻条目)
我有一个新闻控制器,添加,列出所有,咨询,删除和各自的视图。
现在,我已经把我的控制器组织成这样了:
控制器:
- 管理
- news.php
- 的作者
- news.php
- NormalUser
- news.php
公共
因此在登录后,用户被重定向到相应的News控制器。例如,Author News Controller有Add
、View
、Consult
函数,NormalUser News Controller只有View
、Consult
函数。
让我困扰的是,必须有一种简单的方法来组织它,根据用户的类型给予不同的权限。它应该重复某些代码吗?
Views呢?头将根据用户的不同而不同。我应该使用相同的头模板和一些if语句来显示不同的数据(取决于用户),还是应该在包中重复视图,更改头?
视图:
- 管理
- header。php
- . php
- view.php
- list .
- delete.php
- footer。php
- 的作者
- header。php
- . php
- view.php
- list .
- footer。php
- NormalUser
- header。php
- view.php
- list .
- footer。php
在这一刻,我有一个template
文件夹与header.php
和footer.php
,但我有不同的标题的问题。
否否否否当你第二次(几乎)做同样的事情时,警钟就应该敲响了,更不用说第三次或第四次了。
1页眉/页脚视图与几个if语句绝对。可能与list和其他任何重复一半代码的代码相同。
除非它们完全不同,否则也不要使用三个不同的新闻控制器。同样,使用控制语句来指导程序流,无论如何,您都应该检查各个控制器中的适当访问级别。不要只在主控制器中做一次重定向,这些控制器可以通过URL直接访问。
我真的不能在这里放任何代码来帮助,但是开始,如果你有任何问题回来。另外,也许值得在codereview https://codereview.stackexchange.com/上发布一些代码,以获得有关如何采用DRY软件开发的一些提示
http://en.wikipedia.org/wiki/Don%27t_repeat_yourself