MVC方法的OO-PHP和WordPress插件

时间:2013-02-26 23:54:09

标签: php design-patterns wordpress

我开始关注面向对象的PHP。到目前为止,我已经用程序方法开发了大量的PHP系统,但我认为是时候向前推进了。

我目前正在开展的一个项目是WordPress的成绩和差点计算插件。简而言之,该插件从上传的CSV文件中获取乒乓球运动员的结果,并制作残疾人锦标赛的评分。

我正在使用WordPress,因为我的乒乓球俱乐部的网站使用WP,如果它适用于他们我可以将它提供给其他俱乐部/联盟,他们也可以安装插件并获得完全成熟的等级和差点系统。

在WordPress之外,我合理地确信我可以使用MVC模式在OO-PHP中开发这样的系统。它可能看起来像这样:

控制器

  1. 创建模型的实例
  2. 处理“导航”,即GET / POST请求,并确定相应显示的页面模板
  3. 模型

    1. 处理文件的上传和存储
    2. 更新并从数据库中选择信息
    3. 计算球员成绩的主机制
    4. 查看

      1. 管理页面,即设置和上传文件
      2. 成绩页面,显示玩家的成绩和差点
      3. 结果页面,特定用户可以查看各个玩家的结果(主要用于调试目的)
      4. 如果我错了,请纠正我,因为我在过去30分钟左右才学会这种模式,但我的逻辑是创建这个系统的真正MVC方法。

        然而,一旦我将WordPress插件引入等式,我就开始讨论以下问题了:

        • 在非WP系统中,CSS样式只会包含在View的PHP页面中,然后我会在Controller中include。但是,在WordPress中,它不能像那样工作 - 我不能以这种方式使用CSS样式,它们必须是enqueue'd。我将在哪里托管我的CSS文件入队函数?
        • 当有人第一次激活插件时,需要使用WordPress函数创建相应的数据库表。然后必须使用hook,即register_activation_hook。我将在哪里举办这些活动?把它们放在控制器中似乎是明智的,但与此同时我想象控制器可能需要保持尽可能干净和简单。
        • 与上述问题类似,我还需要使用add_menu_pageadd_submenu_page命令创建WordPress管理页面。我在哪里举办这些活动?

        所有这些问题可能都有相同的答案,我知道这只是语义,但我很想尽早尝试这一点,所以我可以真正了解面向对象PHP的MVC模式。< / p>

        提前致谢,

2 个答案:

答案 0 :(得分:1)

如果您正在寻找更好的学习MVC的地方,this would be it.

答案 1 :(得分:0)

希望我能做到这一点。

  1. 无法告诉你CSS,因为我只保留在我的布局文件(视图)中定义的那些。

  2. 重逻辑可以放入服务(外部类),然后在控制器中运行。你会让你的控制器“瘦”

  3. 与前一个相似。您可以将您的菜单存储为模型(不必严格与数据库相关,也可以存储XML / JSON /数组数据),然后在控制器中调用您的添加/删除操作。