Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-MVC框架设计_Php_Oop_Frameworks - Fatal编程技术网

PHP-MVC框架设计

PHP-MVC框架设计,php,oop,frameworks,Php,Oop,Frameworks,我目前遇到了一个自己无法解决的问题: 我已经开始编写一个“小型”框架(browsergame框架),它在某种程度上遵循MVC模式 现在我有了索引、引导、db适配器、分派器、包装器,但我真的不知道如何链接它们。 我编码了他们的方法等,但我不知道如何设计他们像一个引擎一样工作 下一个问题是我的控制器,我不知道如何“链接”它们,以便它们可以轻松访问整个框架。。。。 是的,这是令人困惑的,这就是为什么我需要你的帮助,一些“框架程序流程”的通用方案会非常好 谢谢。你是本末倒置。框架不是编写的,而是成长的。

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

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

现在我有了索引、引导、db适配器、分派器、包装器,但我真的不知道如何链接它们。 我编码了他们的方法等,但我不知道如何设计他们像一个引擎一样工作

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


谢谢。

你是本末倒置。框架不是编写的,而是成长的。看看拉尔夫·约翰逊,四人帮的一员

编辑

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

或者,取决于您在编程和问题领域的专业知识。 重要的是目标(一个有用的框架),过程应该简单地支持您 尽可能最好地实现它。您可以缓慢启动,在同一问题域中开发三个应用程序,而不在它们之间共享任何代码, 只要看看代码库,看看它们有什么共同点,然后可能重构这三个已完成的应用程序,以聚合代码,并提取公共部分。 在开发第二个和第三个应用程序的过程中,这不会给您带来任何帮助, 但这也不会阻碍他们的开发,因为他们同时重构了以前的产品

假设您想要一个易于编写基于浏览器、基于回合的框架 战略

您的第一步是编写这样一个游戏,而不考虑重用 代码在这个单一的游戏之外,但要注意代码在游戏中的重用 它:无情地重构,应用编程的所有原则:, 等,特别干燥。代码重用(不要重复你自己)是一个 编程的基本原理,以及实现 框架您将得到一个类和/或函数库 在整个游戏中使用

第二步是写作,坚持上述原则, 另一个基于浏览器、基于回合的策略,使用第一个 游戏你会发现很多都是第一场比赛特有的。使用 不经修改就可以放入第二个的部分,重构它们 这是有用的,但不太适合,所以他们是有用的,确实适合 在这两场比赛中

对第三个游戏重复此过程

三是最小的数字,让你有希望得到代码 这是跨问题域真正可重用的(想想三角剖分), 这并不能保证会发生。OTOH,导出了一个有用的框架 如果没有对现实世界应用程序的支持,肯定会以失败告终 一堆无用的废话

约翰逊:

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


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

我希望这对我有所帮助;)即使它仍然没有告诉我如何链接框架的实际部分。我不明白作者所说的“应用程序”是指原始编码的项目,还是指具有基本功能的项目,这些功能将被带到以后的框架中。@daemonfire300:我已经扩展了答案,希望能澄清您的疑问。@j.s.再次非常感谢您。这对我真的很有帮助,因为我已经有了一些基于回合的游戏的真实模型,我将使用它们将一些通用逻辑转换到我的代码中。是的,我也有同样的问题,我对框架的类及其权限感到困惑。例如,路由器类分解url并确定控制器名称和操作名称,所以框架的哪个部分应该从路由器类获取这些信息,并将这些信息传递给框架的控制器类。框架可能有两个部分,第一部分是独立类,例如(路由器、数据库、视图、控制器),第二部分应用程序应该运行这些类的功能并在它们之间传递信息??Oguz:框架的任何部分都不应该从路由器获取信息。编程的另一个关键原则(与DRY相关)是告诉,不要问。这也会有所帮助。