【问题标题】:Understanding Frameworks [closed]理解框架[关闭]
【发布时间】:2009-03-27 22:25:53
【问题描述】:

理解一个框架是如何以及为什么要这样写的最好方法是什么?

【问题讨论】:

标签: php open-source frameworks


【解决方案1】:

为其开发功能,或修复错误。如果您使用该框架来开发实际解决方案,您可以列出要解决的缺点或要添加的功能,以使您的任务更容易。

修复错误将真正帮助您理解代码,因为大多数时候您会得到一段示例代码来重新创建它,然后您可以追踪到地狱的深处以找出问题所在。

真正需要的是坚持。

【讨论】:

  • 所以访问错误跟踪器,选择一个有趣的,然后解决它?
  • 是的,这就是它的长短。
【解决方案2】:

取一个非常简单的组件并分析代码。例如,看看 Zend 框架的一些组件(像Zend_Version 这样非常简单的组件,或者,稍微提高一点但仍然保持简单,Zend_Debug)。把它们分开,看看是什么让它们打勾。然后,尝试编写自己的简单组件。

【讨论】:

    【解决方案3】:

    在“从头开始”制作了许多网站后,我发现自己一遍又一遍地重用相同的脚本,而且我发现有些事情非常乏味,因为我以前从未费心将它们抽象出来以实现重用性。所以,如果你有任何制作网站的经验,你应该对你的框架应该包含什么有一个很好的感觉。如果不是,我可能会从考虑 MVC 文件结构开始,让您的框架首先使用视图,然后是控制器,然后是模型。然后确保它们中的每一个都易于扩展,因为无论您多么努力,总会缺少一些东西......然后在您需要时开始使用实用程序(表单助手,模型助手等)。换句话说,想出一个你想使用框架的项目,同时构建框架和网站。

    【讨论】:

    • 我不知道我是否一定要编写自己的框架......虽然听起来我这样做会获得很多经验。
    • 糟糕。我陷入了其他答案,忘记了这不是您的意图:p 无论如何,它会让您很好地了解其中一些框架的来源。我开始为 CakePHP 开发,首先阅读文档,建立半个网站,然后实现 ...
    • ...框架中有一些空白,我可以用我自己的一些模块来填补。一个好的框架将支持附加组件(正如我所提到的)——尝试下载第 3 方附加组件并查看它们如何集成它,然后如果您想要/感觉需要,您可以尝试制作自己的。少了一点……
    • ... 比整个框架都吓人。所以我想说只涉足您感兴趣的部分,而不是尝试将整个框架作为一个整体来处理。
    【解决方案4】:

    我知道世界需要另一个,就像它需要一个洞,但是编写自己的框架是学习语言的好方法。在不到两周的时间里,我用 PHP 写了一篇相当完整的文章,并在此过程中学到了很多关于 PHP 和 Web 开发的知识。

    我没有发布它的唯一原因是因为我最终对它管理会话状态的方式不满意,但这也是一次很好的学习体验!

    我认为开始框架设计的方法是为它写下大约 5 个基本目标。对我来说,这些是:

    • 旨在制作具有十几种形式的简单 Web 应用程序
    • 面向精通 SQL 的人
    • 没有 PHP 或其他程序代码(SQL SP 中的除外)
    • 无需 HTML/javascript/CSS 编程
    • 用 XML 描述的应用程序
    • 在普通 PHP/Apache 堆栈上工作
    • 服务器上没有状态维护

    这足以让我开始。

    我可以提出的另一个建议是在构建框架本身的同时尝试使用框架构建应用程序。这将很快揭示问题并为新方向 abd 功能提出建议。

    【讨论】:

      【解决方案5】:

      你在正确的轨道上。请记住,罗马不是一天建成的。每栋房子都是在更长的时间内建造的,一砖一瓦。

      通过使用框架,您会发现它的一些缺点,并能够找到一些缺失或需要改进的功能。

      从那里开始,开发改进并将其提交给框架社区以供同行评审。即使他们决定不将您的工作纳入框架,您也会收到有关您工作的非常有价值的反馈。

      不要止步于此,将您在第一次尝试中学到的知识用于第二次(以及第三次、第四次、第五次……)这样您将学会理解其他人对框架的期望(可能会有所不同非常出乎自己的意料),慢慢了解hte框架本身的内部工作原理。

      结论:要有耐心和坚持。理解会随之而来。 (听起来很深奥,我知道。但它可能有效!)

      【讨论】:

        【解决方案6】:

        尽管定义很模糊,但大多数框架都包含许多内容。

        • 提供基本引导程序(管理设置、设置环境、检查 PHP 版本之间的兼容性问题等)
        • URL 路由 - 如何定义哪些 URL 指向哪些页面的规则。
        • 管理插件、库、模块等
        • 数据库 ORM - 操作对象而不是编写 SQL 查询(简化)
        • 模板化 - 通常涉及为模板逻辑(循环、条件)创建一种小型语言,以避免在模板本身中包含 PHP 代码。

        除此之外,大多数框架还包含大量库,从简单的电子邮件到高级 Web 服务 API。

        我会推荐两个框架来看看:

        1. Codeigniter

          我推荐这个,因为它是一个“包含电池”的框架,开箱即用。它还有一个很棒的社区,很多 3rd 方库。 CI 有一些技巧可以让框架同时与 PHP4 和 PHP5 兼容,这也很好知道(因为出于某种原因,很多人仍在使用 PHP5)。您还应该看看KohanaPHP,它是 CodeIgniter 的一个分支,已被重写为严格的 PHP5 框架。

        2. Zend Framework

          Zend 是一个基于模块的框架。您无需将所有内容都放在目录中并大量制作页面,而是选择您需要的部分并自己将它们粘合在一起。由于 Zend 是由 PHP 背后的引擎背后的人制作的(感到困惑吗?),它使用 PHP5 的“最新和最伟大的”——一切都是面向对象的,并且它使用类型提示。非常干净的代码,虽然有点冗长。

        我认为基本的东西是引导程序(框架的“粘合剂”),以及每个框架如何实现一个系统来支持用户制作的库和插件。其余的您可以在其他地方作为独立应用程序找到。

        【讨论】:

          【解决方案7】:

          您应该真正尝试从高层次上理解请求的生命周期。这是一个很好的例子,说明 Zend 框架中从请求到响应会发生什么,http://framework.zend.com/manual/en/zend.controller.basics.html

          【讨论】:

          • 没问题,这才是它真正吸引我的原因。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多