Php 我应该在HMVC Codeigniter中将此模块设置为不同的模块吗?

Php 我应该在HMVC Codeigniter中将此模块设置为不同的模块吗?,php,model-view-controller,codeigniter,kohana,hmvc,Php,Model View Controller,Codeigniter,Kohana,Hmvc,我刚刚开始在Codeigniter中使用HMVC。主要模块是一个名为“blog”的新闻/博客网站。我希望用户能够登录到评论,所以我有身份验证文件(实际上是tank auth)。现在,我也希望用户有自己的个人资料页,显示他们的张贴统计数据和个人信息。用户还可以拥有一个私人消息系统,在该系统中,他们可以相互发送消息 作为HMVC的新手,我应该如何模块化我的代码?我现在猜会有一个好的 “博客”-博客/新闻显示 “身份验证”-用户身份验证 “用户”-用户配置文件+私人消息 “blog”和“users”都

我刚刚开始在Codeigniter中使用HMVC。主要模块是一个名为“blog”的新闻/博客网站。我希望用户能够登录到评论,所以我有身份验证文件(实际上是tank auth)。现在,我也希望用户有自己的个人资料页,显示他们的张贴统计数据和个人信息。用户还可以拥有一个私人消息系统,在该系统中,他们可以相互发送消息

作为HMVC的新手,我应该如何模块化我的代码?我现在猜会有一个好的

  • “博客”-博客/新闻显示
  • “身份验证”-用户身份验证
  • “用户”-用户配置文件+私人消息
  • “blog”和“users”都将调用“auth”,这也会在页面的一角显示一个小部件,显示注册|注册(如果未登录),以及欢迎John!如果以John身份登录,则配置文件|收件箱|设置


    或者我应该将“auth”和“users”组合在一起,还是将“users”拆分为“profile”和“messaging”?如果要设计HMVC结构,层次结构会是什么样子?

    这取决于具体情况,由您决定

    如果你想有一天把评论系统应用到其他模块上,一定要让它成为自己的模块。如果它只与博客相关,您可以将其作为自己的控制器保留在博客模块中。这也是
    modules::run()
    $This->load->module()
    可以方便使用的地方,从任何地方调用控制器来获取视图片段,以显示注释

    我可能会把所有东西都做成自己的模块


    真正的100%模块化几乎是不可能的,总会有某些依赖关系。你能做的最好的事情就是尝试以一种对你的特定项目有意义的方式来组织它。一般来说,尽可能地模块化-如果你决定某一天删除博客评论,你可以删除评论模块。

    我对模块化做了一些规划和思考,注意到我只能为每个HMVC模块配备一个控制器?由于模块名必须与控制器名/文件名相同,因此我得出了这个结论。这是真的吗?不是真的。您可以拥有任意数量的控制器。例如,“blogs”模块中的“comments”控制器,通过url
    /blogs/comments/comments\u方法访问,我现在明白了。换句话说,“auth”模块的默认控制器将是“auth”控制器,可以通过/blogs/auth以及/blogs/auth/auth访问。您的auth模块不应该在您的blogs模块内-我不确定您的意思-所以不。但是,您在第一部分是正确的。默认控制器名称与模块名称匹配,但也可以访问其他控制器。例如,如果我的
    blogs
    模块中有两个名为
    blogs
    comments
    的控制器,我可以通过
    /blogs/comments
    访问
    comments->index()
    。我知道您使用的是tank auth,所以实际上您唯一应该做的就是登录和注销以及管理用户。想进一步解释一下你想做什么吗?对,很抱歉造成混淆,我的身份验证模块不在博客模块内,我错误地将“/blogs”包含在exmaple url中。我只是在系统中实现了tank auth,允许访问者通过留言与网站互动,并通过个人资料和私人消息相互互动。谢谢你,消除了我的许多疑虑!