【问题标题】:OOP + MVC advice on Member Controller关于成员控制器的 OOP + MVC 建议
【发布时间】:2010-04-20 22:30:36
【问题描述】:

当我在 MVC 结构中学习使用 OOP 时,我正在尝试尽可能多地遵循良好的做法,所以我向你们寻求一些关于这里让我有点困扰的建议。

我正在写一个网站,我将有许多不同的表格供会员填写(主要是关于他们自己的数据),所以我决定建立一个会员控制器,其中所有与会员有关的表格都在表示为单独的方法。这包括登录/注销方法,以及编辑配置文件数据等。除了这些方法之外,我还有一个方法来生成会员的控制面板小部件,当会员登录时,它是网站上每个页面上的常量. 唯一的问题是,这个控制器中的所有其他方法都具有相同的依赖项和表单模板,所以在构造函数中生成所有这些会很棒,但是由于 control_panel 方法没有相同的依赖项等,我不能为此目的使用构造函数,而是我必须在每个方法中重新声明依赖项和相同的模板 sn-ps。这显然不理想并且不遵循 DRY 原则,但我想知道我应该如何处理 control_panel 方法,因为它与成员相关,这就是为什么我首先将它放在那个控制器中。

我只是在这里过于复杂了,将 control_panel 方法移动到一个简单的帮助类中是否有意义?

以下是控制器的基本方法:

class Member_Controller extends Website_Controller {

    public function __construct() 
    {
        parent::__construct();

        if (request::is_ajax())
        {
            $this->auto_render = FALSE; // disable auto render
        }
    }

    public static function control_panel()
    {
        //load control panel view
        $panel = new View('user/control_panel');

        return $panel;
    }

    public function login()
    {
    }

    public function register()
    {
    }

    public function profile()
    {
    }

    public function household()
    {
    }

    public function edit_profile()
    {

    }

    public function logout()
    {
    }
}

【问题讨论】:

    标签: php model-view-controller oop


    【解决方案1】:

    我会做的是避免将所有东西都放在一个控制器中,而是相应地分离功能 - 例如,您可以有一个 Registration_Controller 只处理成员的注册、Authentication_Controller、Profile_Controller 等等,这种方式是更容易可视化应用程序的每个部分负责什么,而不是让一个控制器承担很多责任,这会导致混乱和其他可维护性问题,至少恕我直言,它对我有用。

    回到您关于控制面板的具体问题,是的,将其从控制器中取出更有意义,特别是如果不是它的操作,并且正如您所提到的,您可以为所有可重复的显示逻辑。如果某些内容在控制器的上下文中没有意义,请将其删除。

    有一些很酷的框架,例如 Cake 和 Zend FW,它们使设计/开发 MVC 应用程序的工作变得更轻松,并且带有一组丰富的开箱即用的组件。

    虽然 MVC 和 Fw 不是强制性的,但它们都取决于范围和您的特殊需求,有时它们会提供很大帮助,大多数时候我都会使用它们,但有时会使事情变得过于复杂。保持简单;)

    干杯, M.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多