【问题标题】:PHP MVC Framework DesignPHP MVC 框架设计
【发布时间】:2010-12-23 15:19:03
【问题描述】:

我目前遇到了一个我自己无法真正解决的问题:

我已经开始编写一个“小型”框架(browsergame-framework),它在某种程度上遵循 MVC 模式。

现在我有了索引、引导程序、数据库适配器、调度程序、包装程序,但我真的不知道“如何”链接它们。 我对他们的方法等进行了编码,但我不知道如何将它们设计为像引擎一样工作。

下一个问题是我的控制器,我不知道如何“链接”它们,以便它们可以轻松访问整个框架...... 是的,这很令人困惑,这就是为什么我需要你的帮助,一些“框架程序流程如何”的通用方案应该非常好。

谢谢。

【问题讨论】:

  • 是的,我有同样的问题,我对框架的类及其权限感到困惑。例如,路由器类分解 url 并确定控制器名称和动作名称,因此框架的哪个部分应该从路由器类获取这些信息并将此信息传递给框架的控制器类。可能应该有两部分框架,第一部分是独立的类,例如(路由器,数据库,视图,控制器),应用程序的第二部分应该运行这些类的功能并在它们之间传递信息????
  • Oguz:no 框架的一部分应该从路由器获取该信息。编程的另一个关键原则(与 DRY 相关)是 Tell, Don't Ask
  • 这个php mvc tutorial 也可以提供帮助。

标签: php oop frameworks


【解决方案1】:

你是本末倒置。框架不是编写的,它们是成长的。请参阅来自四人帮之一的拉尔夫约翰逊的Evolving Frameworks

编辑

我不明白,作者所说的“应用程序”是什么意思,这样做 是指原始编码项目还是意味着具有基本功能的项目 这将被带到后面的框架中。

取决于您在编程方面的专业知识和问题领域。 重要的是目标(一个有用的框架),这个过程应该简单地支持你 尽可能地实现它。您可能开始缓慢,在同一个问题域中开发三个应用程序,而它们之间没有任何代码共享, 只需查看代码库,看看它们有什么共同点,并可能重构这三个完成的应用程序以收敛代码,并提取共同部分。 在第二个和第三个应用程序的开发过程中,这不会给您任何帮助, 但它也不会通过同时重构之前的那些来阻碍他们的发展。

假设您想要一个框架来简化基于浏览器、回合制的编写 策略。

您的第一个回合是编写这样的游戏,而不考虑重用 在这个单一游戏之外的代码,但要注意代码重用 it:无情地重构,应用所有编程原则:OCPSRPDRY 等。尤其是 DRY。代码重用(不要重复自己)是一种 编程的基本原理,以及通往成功之路的第一步 框架。您最终将获得一个类和/或函数库 在整个游戏中使用。

你的第二轮是写,坚持上面提到的原则, 另一种基于浏览器的回合制策略,使用第一个的代码 游戏。您会发现其中大部分内容都是针对第一场比赛的。采用 无需修改即可放入第二个的部分,重构那些 有用但不太适合,因此它们很有用并且确实适合 在这两款游戏中。

在第三场比赛中重复该过程。

三是让你有希望得到代码的最小数字 在问题域中真正可重用(想想三角测量), 不保证它会发生。 OTOH,派生出一个有用的框架 如果没有实际应用程序的支持,肯定会以 一堆没用的废话。

约翰逊:

开发可重用的框架不能通过简单地设置和 思考问题域。没有人有洞见 具有适当的抽象。

仔细阅读“三个例子”部分。

【讨论】:

  • 我希望这会对我有所帮助;) 即使它仍然没有告诉我如何链接框架的实际部分。而且我不明白,作者所说的“应用程序”是什么意思,这是指原始编码项目还是意味着具有基本功能的项目,这些功能将被带到以后的框架中。
  • @daemonfire300:我已经扩展了答案,希望能消除您的疑虑。
  • @j.s.再一次非常感谢你。这对我很有帮助,因为我已经有了一些回合制游戏的真实模型,我会用它来将一些通用逻辑转移到我的代码中。
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 2011-06-09
  • 1970-01-01
相关资源
最近更新 更多