如何将基于页面的 PHP 应用程序转换为 MVC?

2023-12-21

一段时间以来,我一直在努力解决如何使用 MVC 框架重新编码基于页面的 PHP 应用程序。仅作为背景,我必须将应用程序移至 MVC,因为我的老板正在让我这样做。不管怎样,我已经坐下来,打印出了目录结构。然后我开始尝试计划如何将这些页面转换为控制器/操作对。有些事情看起来非常简单。例如,我有几个页面专门用于添加/编辑/删除用户。创建“用户”控制器并添加用于添加/编辑/删除的方法或操作非常容易。我遇到的问题是决定何时实际创建一个控制器,而不是让某些东西只是一个动作,因为它并不总是那么明确。例如,登录控制器与用户/登录,或注册控制器与用户/注册。对我来说,如果对象可以做某事,那么作为一个动作就完全有意义,但它并不总是那么清晰。

另一个例子是,我有大约 12 个表单页面用于创建“计划”。在我的脑海中,我认为我需要创建一个“计划”控制器,然后每个旧的页面都将成为一个动作。所以我有一个控制器有 12 个动作(方法)。对我来说,问题是,尽管所有 12 个页面都是数据输入表单,最终构成了这个“计划”,但这就是它们的共同点。每个页面都使用数据库中的不同表,并且彼此之间没有其他共同点。基本上,通过创建一个“计划”控制器,我只是将其用作分组机制;不一定使用它,因为它们有一些相互关联的东西。至少在上面的“用户”控制器示例中;这些操作中的每一个都使用相同的“用户”表,因此将这些操作分组到一个控制器中是有意义的。我应该将这些数据输入表单中的每一个都设置为自己的控制器吗?

我想这只是归结为让自己使用控制器作为层次结构实体而不是对象/操作。看来以错误的方式使用控制器真的很容易陷入这个陷阱。有人明白我在说什么吗?希望它不会太混乱。

EDIT:如果我尝试坚持每个视图使用一个控制器;然后,我会将每个请求的代码保持在最低限度。这是最好的方法吗?

EDIT:从每个人的说法来看,似乎每个视图只有一个控制器并不符合我的最佳利益。我仍然有一些担忧,因为控制器似乎会很快变胖,但这是另一个讨论。我还存在一些关于何时决定使用控制器而不是操作的问题。一个很好的例子是堆栈overflow本身。在页面顶部,您有一个“问题”选择,我们可以假设您会进入“问题”控制器。我这样说是因为在右侧您可以选择“提出问题”,该 URL 指向“问题/询问”。这是有道理的,你使用问题控制器的询问方法。让我困惑的是菜单上有“未答复”选项。看起来这本身就有一个控制器。为什么它不只是问题控制器下的一个操作,如“问题/未回答”?这就是我的事情变得混乱的地方。


既然你的老板很喜欢流行语,请告诉他查找“重构”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将基于页面的 PHP 应用程序转换为 MVC? 的相关文章

  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • 为什么我的会话仍然存在?

    我一定很愚蠢 因为似乎一件相当明显的事情现在让我完全困惑 我有一个会议 ie SESSION handbag id 在某个时刻 我需要彻底终止这个会话 ie at the start of the page session start el
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 PHP 构建正确的 SOAP 请求

    我需要格式化 构建此 SOAP 服务 的请求 http api notificationmessaging com NMSOAP NotificationService wsdl http api notificationmessaging
  • 如何从网站网址中隐藏 .html 扩展名

    我知道这个问题以前曾被问过 但有人知道隐藏 html 扩展名的好方法吗 我已经尝试了许多代码和许多答案https stackoverflow com https stackoverflow com 但我没有看到结果 那是我再问你一次 我有一
  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 覆盖 FOS 用户包中的“更改密码”模板

    我做了一些研究 遗憾的是找不到任何帮助 因此 我将 FOSUserBundle ChangePasswordAction 渲染到我的模板中 但它显示供应商提供的默认模板 我的渲染控制器的模板 block body h2 Einstellun
  • PHP 中标头的使用

    非常简单的问题 这两个 PHP 版本 5 标头调用中哪一个是 最好的 header Not Modified true 304 header HTTP 1 1 304 Not Modified 我很确定第一个是最多价的 但只是好奇如果在 H
  • 是否可以用 PHP 编写电子邮件解析器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Windows 上安装 Zend 框架

    安装 Zend Framework 就是这么简单 是的 对 好吧 我正在写一本初学者的书 有一件不太详细的事情是最重要的部分 安装该死的东西 浏览了几个小时的快速入门指南后 它只说 下载 Zend 添加包含目录 bla bla 然后就完成了
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • PHP更改小数点分隔符

    在某些情况下 PHP 会在操作后更改小数点分隔符 下面是一个示例 为什么小数点分隔符变成 这是一个多语言网站 在西班牙语版本中 区域设置设置为西班牙语 es ES 小数点分隔符为 这就是为什么正在改变 解决方案是强制 LC NUMERIC

随机推荐