【发布时间】:2009-03-27 22:25:53
【问题描述】:
理解一个框架是如何以及为什么要这样写的最好方法是什么?
【问题讨论】:
-
我不同意你对框架的定义。我相信您可以拥有一个逻辑框架,而无需编写任何框架代码或进行任何抽象。模板?这不是框架的工作。
标签: php open-source frameworks
理解一个框架是如何以及为什么要这样写的最好方法是什么?
【问题讨论】:
标签: php open-source frameworks
为其开发功能,或修复错误。如果您使用该框架来开发实际解决方案,您可以列出要解决的缺点或要添加的功能,以使您的任务更容易。
修复错误将真正帮助您理解代码,因为大多数时候您会得到一段示例代码来重新创建它,然后您可以追踪到地狱的深处以找出问题所在。
真正需要的是坚持。
【讨论】:
取一个非常简单的组件并分析代码。例如,看看 Zend 框架的一些组件(像Zend_Version 这样非常简单的组件,或者,稍微提高一点但仍然保持简单,Zend_Debug)。把它们分开,看看是什么让它们打勾。然后,尝试编写自己的简单组件。
【讨论】:
在“从头开始”制作了许多网站后,我发现自己一遍又一遍地重用相同的脚本,而且我发现有些事情非常乏味,因为我以前从未费心将它们抽象出来以实现重用性。所以,如果你有任何制作网站的经验,你应该对你的框架应该包含什么有一个很好的感觉。如果不是,我可能会从考虑 MVC 文件结构开始,让您的框架首先使用视图,然后是控制器,然后是模型。然后确保它们中的每一个都易于扩展,因为无论您多么努力,总会缺少一些东西......然后在您需要时开始使用实用程序(表单助手,模型助手等)。换句话说,想出一个你想使用框架的项目,同时构建框架和网站。
【讨论】:
我知道世界需要另一个,就像它需要一个洞,但是编写自己的框架是学习语言的好方法。在不到两周的时间里,我用 PHP 写了一篇相当完整的文章,并在此过程中学到了很多关于 PHP 和 Web 开发的知识。
我没有发布它的唯一原因是因为我最终对它管理会话状态的方式不满意,但这也是一次很好的学习体验!
我认为开始框架设计的方法是为它写下大约 5 个基本目标。对我来说,这些是:
这足以让我开始。
我可以提出的另一个建议是在构建框架本身的同时尝试使用框架构建应用程序。这将很快揭示问题并为新方向 abd 功能提出建议。
【讨论】:
你在正确的轨道上。请记住,罗马不是一天建成的。每栋房子都是在更长的时间内建造的,一砖一瓦。
通过使用框架,您会发现它的一些缺点,并能够找到一些缺失或需要改进的功能。
从那里开始,开发改进并将其提交给框架社区以供同行评审。即使他们决定不将您的工作纳入框架,您也会收到有关您工作的非常有价值的反馈。
不要止步于此,将您在第一次尝试中学到的知识用于第二次(以及第三次、第四次、第五次……)这样您将学会理解其他人对框架的期望(可能会有所不同非常出乎自己的意料),慢慢了解hte框架本身的内部工作原理。
结论:要有耐心和坚持。理解会随之而来。 (听起来很深奥,我知道。但它可能有效!)
【讨论】:
尽管定义很模糊,但大多数框架都包含许多内容。
除此之外,大多数框架还包含大量库,从简单的电子邮件到高级 Web 服务 API。
我会推荐两个框架来看看:
我推荐这个,因为它是一个“包含电池”的框架,开箱即用。它还有一个很棒的社区,很多 3rd 方库。 CI 有一些技巧可以让框架同时与 PHP4 和 PHP5 兼容,这也很好知道(因为出于某种原因,很多人仍在使用 PHP5)。您还应该看看KohanaPHP,它是 CodeIgniter 的一个分支,已被重写为严格的 PHP5 框架。
Zend 是一个基于模块的框架。您无需将所有内容都放在目录中并大量制作页面,而是选择您需要的部分并自己将它们粘合在一起。由于 Zend 是由 PHP 背后的引擎背后的人制作的(感到困惑吗?),它使用 PHP5 的“最新和最伟大的”——一切都是面向对象的,并且它使用类型提示。非常干净的代码,虽然有点冗长。
我认为基本的东西是引导程序(框架的“粘合剂”),以及每个框架如何实现一个系统来支持用户制作的库和插件。其余的您可以在其他地方作为独立应用程序找到。
【讨论】:
您应该真正尝试从高层次上理解请求的生命周期。这是一个很好的例子,说明 Zend 框架中从请求到响应会发生什么,http://framework.zend.com/manual/en/zend.controller.basics.html
【讨论】: