Kohana,模拟多重继承?

时间:2011-09-03 23:33:47

标签: php oop model-view-controller design-patterns inheritance

我正在开发一个网络应用程序,用于管理正在医学领域学习的大学生。这些学生中的每一个都需要在大学生涯的某些阶段参加“临床经验”。我正在撰写的网络应用程序旨在帮助大学,诊所(学生们去体验他们的经历),以及学生能够轻松地相互协调。

我正在使用Kohana框架,因此是MVC架构模式。这是我现在构建应用程序的方式。

                      Controller
                          |
              --------------------------
              |                        |
            Public                 Dashboards
        ------|------                  |
        |           |                  |
      Login  Recover Password          |
                                       |
                         -------------------------------
                         |             |               |
                     Students     Universities      Clinics

因此,在公共部分,用户可以登录或恢复他们的密码。

用户登录后可以访问仪表板部分,具体取决于用户帐户的类型,他们将拥有学生,大学或诊所仪表板。现在,在三种仪表板类型中,每个仪表板将具有一组不同的控制器,用于用户可以采取的操作。所以上图实际上也代表了控制器的继承性。作为学生仪表板一部分的Controller对其中一个仪表板部分具有以下继承:

Dashboard Section - > Student Dashboard - > Dashboard - > Controller

现在,如果每个不同的仪表板类型的每个Dashboard Section都是唯一的,那么这一切都很好。同样,只有该特定控制器才需要作为该控制器一部分的所有操作。

然而事实是,一些仪表板类型DO具有共同的控制器。例如,每个仪表板类型都有一个account控制器。该控制器允许用户管理他们的帐户。问题是,我不想为学生,大学和诊所仪表板下的每个account控制器编写完全相同的控制器代码。

现在最好的情况是,每个account控制器不仅可以从其各自的仪表板类型(StudentUniversityClinic继承,而且还可以从一个单独的类(可能称为Account_Controller)继承方法,在那里我为帐户控制器实现适当的操作。

当然PHP缺少多重继承。那么,为了使我的代码非常干燥,在这​​里实现的正确设计模式是什么?

现在我在名为Dashboard的{​​{1}}类中有一个受保护的方法,我只是在每个仪表板类型的account_update个控制器中调用它。然而,这似乎非常混乱。此外,还有其他情况,仪表板之间常见的控制器将有多个操作。

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找通用课程。