sta*_*ets 3 php oop model-view-controller codeigniter
我正在学习OO和MVC范例(使用Codeigniter和PHP).我继续发现这样的警告:如果你发现自己将相同的代码粘贴到多个文件中,那么你就没有正确使用OO/MVC.所以,对于更有经验的程序员来说,这是一个问题.
我有一个创建用户表单,我使用两个非常相似的版本:
版本1(at /volunteer/register)由匿名用户创建.表单存在于volunteers控制器中,需要由管理员进行验证.
版本2(at /admin/create_volunteer)由登录的管理员创建.表单和验证几乎相同,但提交的参数不同.
另一个类似的例子:
我想构建共享模板的不同用户仪表板,但将由不同的用户角色使用,并具有基于角色的不同功能和信息.我认为我的选择是:
如果这看起来像二年级,我很抱歉,但基本上我正在寻找确定如何在MVC中设计架构的经验法则.
我的问题:
Volunteer&Admin)的逻辑选择是不是理想的?在这种情况下,代码复制是否可以接受?特别是因为这两种形式不一样(不同的规则,不同的界面),如果你需要的话,有两个单独的视图文件绝对没有错.在两个不同的控制器或方法中加载相同的视图文件是完全可以接受的,实际上它是合适的.如果只需要进行一些调整,请尝试通过向其传递不同的数据来重用视图文件.
如果您只想在不同的实例中加载表单视图文件,那么可以节省一些代码重复.只需设置不同的规则,如果需要,将不同的数据传递给视图.它类似于使用相同的表单以两种不同的方法创建和编辑某些内容.如果输出完全不同,只需编写单独的视图文件.如果它是相同的输出但具有不同的数据 - 肯定重复使用它.
不要痴迷于尝试不复制视图片段代码 - 如果您正在编写更多代码以通过修改视图文件以适应不同的实例来强制重用视图文件,那么它就会失败.尽量使一般操作使代码尽可能可重用.
所以,没有看到你的实际代码 - 我会说不要担心它.根据我的经验,前端和后端的视图文件几乎总是唯一的(完全不同的UI).通常,如果您发现重复使用相同的非常相似的代码,则应该为其编写函数,类或模板.