需要有关我的PHP MVC框架正确流程的指导

时间:2010-06-30 20:57:05

标签: php model-view-controller frameworks

我正在创建一个PHP Web应用程序框架(MVC)。我宁愿不使用外部库或组件(因为我希望它现在纯粹是我的工作)

您能告诉我一些关于我的每个文件应该负责的提示/指导吗?例如,框架脚本应该处理什么以及框架中使用的应用程序脚本应该处理什么?

我不断改变编写不同代码的地方(正如我自己想的那样......“这应该由框架还是由每个应用程序处理?”),这使我在进行时更加混乱。

我已经阅读了一些关于MVC,框架等的教程(20 ... 50 ... 100!),但是解释框架的理想“流程”并不是很多。

目前我的工作方式如下:

  • 主要索引(index.php)
    • 定义常量(DS = DIRECTORY_SEPARATOR,PS = PATH_SEPARATOR等)
    • 设置包含路径(ROOT。'/ classes',ROOT。'/ includes'等)
    • 加载框架配置文件(config.php)
    • 设置框架类自动加载器(__ autoloader())
    • 设置某种Core对象(Core :: init($ config)?)
    • 加载应用程序index.php文件(app / index.php)
  • 配置(config.php)
    • 定义配置数组($ config)
    • 配置配置数组($ config ['debug'] = 0 ...或类似的东西..)
  • 应用程序索引(app / index.php)
    • 定义常量(APP_CONTROLLERS,APP_MODELS等)
    • 设置包含路径(APP_PATH。'/ classes',APP_PATH。'/ includes'等)
    • 加载应用程序配置文件(app / config.php)
  • 应用程序配置(app / config.php)
    • 定义配置数组($ app_config)
    • 配置配置数组(与其他配置相同,但适用于App)

现在....我似乎朝着正确的方向前进?框架的主要索引脚本应该做什么,而不是应用程序索引?主索引是否应该启动一些内容并将大部分工作转移到App Index,这将设置路由器等以将URL路由到控制器等......?或者框架是否应该创建路由器并启动控制器,而App只会设置控制器路径和一些规则等。?

我理解控制器的作用,模型/视图等(当我稍后再来时,我会穿过这些桥梁),但是现在我只想让基本的东西从正确的地方正确地流动,以便以后的事情将会运作良好。

此刻,我的脑袋即将爆炸!哈哈

这可能是一个非常愚蠢的问题,但我认为我需要一些直截了当的指导来帮助我清理一切,然后才能完全解决所有问题!任何建议将不胜感激。

谢谢=)

4 个答案:

答案 0 :(得分:4)

当人们只是指出你现有的框架并说你不应该重新发明轮子时,我真的不喜欢。

与其他模式一样,MVC只是指导方针,没有固定的方法来实现结果。这是一种可以通过多种方式实现的理论,以达到理想的效果。

真的,车轮的类比是有缺陷的,这就像是说汽车制造商不要制造新车,因为汽车已经存在。

有些轮子是由木头制成的,而有些是由金属制成的,没有一个流行的PHP MVC框架遵循相同的结构或功能,它们也是非常不同的。

你可以拥有一千个不同的框架,所有框架都遵循MVC模式,或多或少,但不是两个相同。

一个框架过于复杂,需要永远理解它是如何工作的,另一个框架强制执行一个非常具体的工作流程,它允许很少的自由空间,而另一个框架太简单,甚至缺乏基本功能。

有充分的理由开发自己的框架,即它就是这样,即。您的项目框架。没有人比你自己更了解你的代码(希望如此),如果你建立一个很好的框架,让你轻松有效地开发项目,那么一定要重新发明轮子!

John Squibb提供了一个很好的教程,介绍了构建简单MVC框架的一种方法。 http://johnsquibb.com/tutorials/mvc-framework-in-1-hour-part-one

哦,是的另一件事,不要被引诱到普通的新手构造中,其中单个入口点是强制性的,迫使你依赖Apache mod_rewrite或类似的方法。 MVC可以使用单个入口点或多个入口点构建。

您可以开发一个可以在所有项目中重复使用的漂亮库,而不是构建框架。

答案 1 :(得分:3)

在创建自己的MVC框架之前,您应该将一些应用程序放在流行的MVC框架中。这样你就可以更好地了解事情应该如何流动。

记住你正在重新发明轮子......很糟糕。但它确实很有趣呃? ;)

答案 2 :(得分:2)

编写自己的mvc框架时有great tutorial,但正如拜伦所说,你将重新发明轮子。我认为首先编写自己的文章是值得的,虽然它是一个很好的学习经验,而不像一个大的mvc框架(symfonyzend),你会知道代码的每一部分是做什么的。本教程是我在使用Symfony之前了解mvc的一个教程,它帮助我很好地理解了symfony的工作原理。在Anant Garg的教程之后,我转到了Jobeet Symfony tutorial,这真的有助于解释symfony 1.4。

希望这有帮助

答案 3 :(得分:1)

要记住的一点是,MVC只是一种模式,因此并不是100%严格,而是实施指南,可以根据您的具体需求进行调整。正如其他人所建议的那样,试试你所拥有的东西,你会看到什么对你有用,什么不对。