我开始研究面向对象的 PHP。迄今为止,我已经开发了大量采用过程方法的 PHP 系统,但我认为是时候向前迈进了。
我目前正在从事的项目之一是 WordPress 的成绩和障碍计算插件。简而言之,该插件从上传的 CSV 文件中获取乒乓球运动员的成绩,并计算出他们的差点比赛评分。
我正在使用 WordPress,因为我的乒乓球俱乐部的网站使用 WP,如果它适用于他们,我可能会将其提供给其他俱乐部/联盟,他们也将能够安装插件并获得成熟的成绩和障碍系统。
在 WordPress 之外,我有理由相信我可以使用 MVC 模式在 OO-PHP 中开发这样一个系统。它可能看起来像这样:
控制器
- 创建模型的实例
- 处理“导航”,即 GET/POST 请求,并确定相应显示哪些页面模板
模型
- 处理文件的上传和存储
- 从数据库中更新和选择信息
- 计算玩家成绩的主机机制
看法
- 管理页面,即设置和上传文件
- 成绩页面,显示球员的成绩和差点
- 结果页面,特定用户可以在其中查看个别玩家的结果(主要用于调试目的)
如果我错了,请纠正我,因为我在过去 30 分钟左右才学会了这种模式,但按照我的逻辑,这是创建这个系统的真正 MVC 方法。
但是,一旦我将 WordPress 插件纳入等式,我就开始为以下问题而苦恼:
- 在非 WP 系统中,CSS 样式将简单地包含在 View 的 PHP 页面中,然后我会
include
在 Controller 中。但是,在 WordPress 中,它不能那样工作——我不能那样使用 CSS 样式,它们必须是enqueue
'd. 我将在哪里托管用于排队我的 CSS 文件的功能? - 当有人第一次激活插件时,它需要使用 WordPress 函数创建适当的数据库表来执行此操作。这将不得不运行 a
hook
,即 aregister_activation_hook
。我将在哪里托管这些功能?将它们放在控制器中似乎是明智的,但同时我想也许控制器需要保持尽可能干净和简单易读。 - 与上述问题类似,我还需要使用
add_menu_page
和add_submenu_page
命令创建 WordPress 管理页面。我在哪里托管这些功能?
所有这些问题可能都有相同的答案,而且我知道这只是语义,但我热衷于尝试尽早解决这个问题,这样我才能真正了解面向对象 PHP 的 MVC 模式。
提前致谢,