只是为了学习,我应该编写自己的框架,没有任何组件或工具,还是只是阅读开源框架的源代码


Just for learning, should I write my own framework without any components or tools, or just read the source code of an open source framework?

我想了解框架是如何工作的。我应该从头开始制作自己的框架而不使用任何开源组件或任何工具,如 Composer 或 PHPUnit ..等等,或者只是阅读像Symfony或Laravel这样的开源框架的源代码。等。

我应该尽量不使用 Composer 和 PHPUnit(用于自动加载和测试(吗?这对我的学习过程有帮助吗?

一个问题要问你 - 你为什么要这样做,你知道多少 PHP?

框架是一种快速做某事的工具 - 这个想法是抽象出一些东西(无聊和平凡的东西(,这样你就可以更有效率 - 换句话说,这个想法是你不需要知道它是如何工作的或为什么它工作 - 只是它让你的生活更轻松。

好的框架是相对轻量级的,因为它们不会让你的页面变慢,同时增加开发吞吐量。

现在显然,您需要了解框架才能使用它,但您不需要详细了解它的工作原理,我想这就是我向您提出的问题所在 - 除非您计划制作自己的框架或要显着自定义另一个框架,否则为什么要费心学习这个 - 这是您的计划吗?

无论如何,如果你的基本目标是更多地了解 PHP,你不需要研究框架。

现在,由于这是堆栈溢出 - 而不是我在答案中提问 - 我将实际回答这个问题:

你的问题的第一部分"我想了解框架是如何工作的">我认为是我在上面已经解决的问题 - 为什么要打扰?通过项目学习PHP,而不是通过框架。

下一部分,"我应该从头开始制作自己的框架吗"> - 这是一个一般的编程问题,如果你被要求从 Web 服务中获取一些数据,你会先去写套接字层,然后编写加密的协商协议,然后写字符串处理函数等 - 可能不是 - 你会使用一个库(curl?(代替, 为什么?因为你知道它有效,它会比你做的任何东西都好——它会节省你的时间。现在,像PHP框架这样的东西也是如此 - 如果你相信你可以比同行评审的开源框架做得更好 - 那么继续试一试,但是你不太可能很快在与Cake,Laravel等竞争排行榜上名列前茅。

(这里有一个注释 - 如果你有一个超级特定的问题,而现有的通用框架都无法解决,那么你可能想要制作自己的框架,但这不太可能(

我将改写您问题的最后一部分,使其显而易见 - 而不是 我应该尽量不使用 Composer 和 PHPUnit(用于自动加载和测试(?这对我的学习过程有帮助吗?我想你在问,在一般意义上 - "我想做一个PHP项目,我应该使用像Composer和PHPUnit这样的生活质量工具来让我的生活更轻松"> - 答案当然是肯定的,但只有当这是一个真正的项目,如果你这样做一周然后放弃它,那么创建一个适当的项目结构是没有意义的。

我建议您也考虑将 Gulp 与浏览器同步一起使用 - 阅读本文,它将使您的所有 php 项目的生活变得更加轻松,而不仅仅是这个(因为您将拥有某种前端输出(

无论如何,我希望这能给你带来思考:)

我不能说PHP的细节,但是如果你想了解框架是如何工作的,你绝对应该尝试自己构建一个!

至于你是否应该自己实现组件,你必须选择一些你不会低于的抽象级别。(除非你从头开始构建计算机,一直到你的框架级别,这将是愚蠢的(。使用开源组件没有害处。如果你想学习,重新发明轮子是件好事,但这并不意味着你不能使用预制辐条。此外,您可以随时查看组件以了解它们的工作原理。