Php 理解框架

Php 理解框架,php,open-source,frameworks,Php,Open Source,Frameworks,了解框架是如何以及为什么以这种方式编写的最好方法是什么?为其开发一个功能,或者修复一个bug。如果您使用该框架来开发一个真实的解决方案,那么您可以列出一个要解决的缺点或要添加的特性列表,这将使您的任务更容易 修复一个bug将真正帮助您理解代码,因为大多数情况下,您都会收到一段重新创建它的示例代码,然后您可以深入地狱寻找出错的地方 它所需要的只是持久性,真的。使用一个非常简单的组件并分析代码。例如,看看Zend框架的一些组件(一些非常简单的组件,比如Zend_版本,或者,为了提高一点但仍然保持简单

了解框架是如何以及为什么以这种方式编写的最好方法是什么?

为其开发一个功能,或者修复一个bug。如果您使用该框架来开发一个真实的解决方案,那么您可以列出一个要解决的缺点或要添加的特性列表,这将使您的任务更容易

修复一个bug将真正帮助您理解代码,因为大多数情况下,您都会收到一段重新创建它的示例代码,然后您可以深入地狱寻找出错的地方


它所需要的只是持久性,真的。

使用一个非常简单的组件并分析代码。例如,看看Zend框架的一些组件(一些非常简单的组件,比如
Zend_版本
,或者,为了提高一点但仍然保持简单,
Zend_调试
)。把它们分开,看看是什么让它们滴答作响。然后,试着编写自己的简单组件。

您的思路是正确的。记住罗马不是一天建成的。每栋房子都是一块砖一块砖建造的,时间更长

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

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

不要就此止步,将你在第一次尝试中学到的知识用于第二次尝试(以及第三次、第四次、第五次……),这样你将学会理解其他人对框架的期望(这可能与你自己的期望有很大不同),并慢慢理解框架本身的内部工作原理


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

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

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

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

  • 旨在制作包含十几种表单的简单Web应用程序
  • 针对熟悉SQL的人
  • 没有PHP或其他程序代码(SQL SPs中的除外)
  • 不需要HTML/javascript/CSS编程
  • 用XML描述的应用程序
  • 使用普通的PHP/Apache堆栈
  • 服务器上没有状态维护
这足够让我开始了


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

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

  • 提供一个基本的引导程序(管理设置、设置环境、检查PHP版本之间的兼容性问题等)
  • URL路由-如何定义URL指向哪些页面的规则
  • 管理插件、库、模块等
  • 数据库ORM-操作对象而不是编写SQL查询(简化)
  • 模板化-通常涉及为模板逻辑(循环、条件)创建一种小型语言,以避免模板本身包含PHP代码
除此之外,大多数框架还包括一系列库,从简单的电子邮件到高级web服务API

我推荐两个框架:

  • 我之所以推荐这个,是因为它是一个“自带电池”的框架,开箱即用。它还有一个很棒的社区,很多第三方图书馆。CI有一点小把戏,可以让框架在PHP4和PHP5中都发挥良好的作用,这也是很好的了解(因为,出于某种原因,很多人仍然使用PHP5)。您还应该看看,这是CodeIgniter的一个分支,它已经被重写为一个严格的PHP5框架

  • Zend是一个基于模块的框架。你不需要把所有的东西都放在一个目录里,然后翻出大量的页面,而是选择你需要的部分,然后自己把它们粘在一起。由于Zend是由PHP引擎背后的人制作的(困惑了吗?),它使用了PHP5的“最新和最伟大的”特性——一切都是面向对象的,它使用类型暗示。非常干净的代码,如果有点冗长的话


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

    在“从头开始”创建了许多网站之后,我发现自己一遍又一遍地重复使用相同的脚本,而且我发现有些东西非常乏味,因为我以前从来没有费心将它们抽象出来以便重新使用。所以,如果你有制作网站的经验,你应该对你的框架应该包括什么有很好的感觉。如果不是,我可能会首先考虑MVC文件结构,让您的框架首先处理视图,然后处理控制器,然后处理模型。然后确保每一个都是容易扩展的,因为无论你怎么努力,总会有遗漏的东西。。。然后根据需要开始使用实用程序(表单帮助程序、模型帮助程序等)。换句话说,提出一个您希望使用框架的项目,并同时构建框架和网站。

    您应该真正尝试从较高的层次上理解请求的生命周期。下面是一个很好的例子,说明了从请求到