【问题标题】:What should a framework have? [closed]框架应该有什么? [关闭]
【发布时间】:2013-12-29 18:52:32
【问题描述】:

我正在寻找自己的 PHP 面向对象框架,但我不知道除了数据库控制之外还需要什么。

基本问题是,BASIC 框架需要什么才能称为框架,框架需要的最基本的功能集是什么?

【问题讨论】:

  • 为什么不研究一些现有的框架,看看它们提供了什么?最后,由你决定;就框架应该提供什么征求我们的意见对于 Stack Overflow 来说是题外话。
  • 我明白了,那我就开始工作了:D
  • 我会尝试说服您不要自己编写。尝试一些最好的(Symfony、Zend、Laravel、Slim 等),然后,如果您仍然认为需要制作另一个,请继续。但是,如今可用于独特功能的空间相当狭窄!
  • 你也需要一个路由器,这里有一个简单的例子:github.com/Codingbean/Macaw。您应该能够将请求路由到适当的处理程序,并且最好拥有像 RedBeanPHP 这样的性感 ORM:redbeanphp.com。一旦你得到一些基本的工作,尝试将 SQL 命令直接烘焙到框架中。但是,我强烈支持@halfer 的建议,不要自己动手——重新发明轮子是一种糟糕的编程习惯。

标签: php frameworks


【解决方案1】:

我之前从头开始构建了一个 MVC 框架,但出于速度原因决定不使用它,而是支持phalconphp。我在 Phalcon 中找到的框架中想要的一切,所以我停止开发自己的框架,因为它比我可以构建的任何东西都快,除非我将它编写为 PHP 的 C 扩展。但我确实设法从头开始创建了一个功能齐全的框架,这对我来说是一次学习经历。最后,您应该使用预先存在的框架。

一个基本的 MVC 框架由一个带有 handle() 方法的路由器组成,用于根据数组中一组已定义的路由处理 URL,以将 URL 拆分为多个段并将它们与控制器和操作相匹配。对于这个阶段,我建议查看RouteMap 0.9.1。只需在您自己的框架中为其创建一个包装器,以使用您需要的功能。

在路由之后,您需要一个包含一堆控制器的目录,每个控制器一个文件。例如indexController.php 包含class IndexController 等。每个动作对应一个类的方法。还要确保为所有要扩展的控制器定义一个基本控制器,以便它们可以继承常用功能。

然后你有一个带有模型的模型目录来扩展你的数据库管理器和一个视图目录来扩展你的视图助手。最后,您将需要一个注册表,就像 Windows 如何拥有整个操作系统所依赖的注册表“数据库”一样。然后配置数据、路由器、语言等可以存储在注册表中。一旦你对这些基本的东西进行了编码,你的框架就有了它的基本要素。

尝试阅读其他 MVC 框架的结构,以了解功能的功能。至于前端控制器,发送所有内容的 index.php,我建议使用我随着时间的推移开发的这个 .htaccess 杰作:http://pastie.org/private/rzgjswnwfmeiuwgy2n7bya 它的编写方式是直接请求 index.php像所有其他不存在的文件一样对待,所以你可以给他们一个错误页面来隐藏你的 index.php 文件。然后从 PHP 中发送路由器的句柄方法是$_SERVER['REDIRECT_RE_URL']

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 2023-03-19
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多