了解框架

时间:2009-03-27 22:25:53

标签: php open-source frameworks

理解框架的编写方式和原因的最佳方法是什么?

7 个答案:

答案 0 :(得分:14)

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

修复错误确实可以帮助您理解代码,因为大多数情况下,您会获得一段重新创建代码的示例代码,然后您可以追溯到地狱的内容以找出出错的地方。< / p>

真正需要的是持久性。

答案 1 :(得分:6)

选择一个非常简单的组件并分析代码。例如,看一下Zend Framework的一些组件(像Zend_Version这样简单的东西,或者为了保持简单,Zend_Debug)。将它们分开,看看是什么让它们打勾。然后,尝试编写自己的简单组件。

答案 2 :(得分:3)

在从头开始制作许多网站之后,我发现自己一遍又一遍地重复使用相同的脚本,我发现一些非常繁琐的东西,因为在重新使用之前我从不打算将它们抽象出来。因此,如果您有任何制作网站的经验,您应该对您的框架应该包含的内容有一个很好的感觉。如果没有,我可能会首先考虑一个MVC文件结构,让你的框架首先使用视图,然后是控制器,然后是模型。然后确保每个都可以轻松扩展,因为无论你怎么努力,总会有一些东西丢失......然后在需要时开始使用实用工具(形成助手,模型助手等)。换句话说,想出一个您想要使用该框架的项目,并同时构建框架和网站。

答案 3 :(得分:2)

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

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

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

  • 旨在制作十几种形式的简单Web应用程序
  • 针对熟悉SQL的人员
  • 没有程序代码PHP或其他(SQL SP中除外)
  • 不需要HTML / javascript / CSS编程
  • XML中描述的应用程序
  • 使用vanilla PHP / Apache堆栈
  • 服务器上没有状态维护

这足以让我开始。

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

答案 4 :(得分:1)

你走在正确的轨道上。请记住,罗马不是一天建成的。每栋房屋都建造在一个较长的时期,一砖一瓦。

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

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

不要停在那里,使用你在第一次尝试时学到的第二个(以及第三个,第四个,第五个......)这样你就会学会理解别人对框架的期望(可能会有所不同)非常符合你自己的期望),慢慢理解hte框架本身的内部运作。

结论:要耐心,坚持不懈。理解将随之而来。 (听起来很神秘,我知道。但它可能有效!)

答案 5 :(得分:1)

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

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

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

我建议看两个框架:

  1. Codeigniter

    我推荐这个,因为它是一个开箱即用的“电池包含”框架。它还有一个很棒的社区,很多第三方图书馆。 CI有一些技巧可以使框架与PHP4和PHP5都很好用,这也很有用(因为,出于某种原因,很多人仍然使用PHP5)。您还应该查看KohanaPHP,它是CodeIgniter的一个分支,已被重写为严格的PHP5框架。

  2. Zend Framework

    Zend是一个基于模块的框架。您可以选择所需的部件并将它们粘合在一起,而不是将所有内容放在目录中并生成页面。由于Zend是由PHP背后的人们制造的(混淆了吗?),它使用PHP5的“最新和最好的” - 一切都是面向对象的,它使用类型提示。非常干净的代码,如果有点冗长。

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

答案 6 :(得分:1)

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