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

时间:2016-02-07 21:04:06

标签: php frameworks

我想了解框架是如何工作的。我应该在不使用任何开源组件或任何工具(如Composer或PHPUnit等)的情况下从头开始创建自己的框架,或者只是阅读像Symfony或Laravel等开源框架的源代码。

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

2 个答案:

答案 0 :(得分:1)

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

框架是一种快速做事的工具 - 这个想法是抽象出一些东西(枯燥乏味的东西),这样你就可以提高工作效率 - 换句话说,你的想法是你不需要知道它是怎样的工作或为什么工作 - 只是它让你的生活更轻松。

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

现在很明显,您需要了解该框架才能使用它,但您不需要知道它是如何工作的详细,我想这就是我的问题所在坐下来 - 除非你打算制作自己的框架或者去大规模定制另一个框架,否则为什么还要学习这个?这是你的计划吗?

无论如何,如果您的基本目标是了解有关PHP的更多信息,则无需查看框架。

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

问题的第一部分“我想了解框架是如何工作的”我认为我已经解决了上述问题 - 为什么要这么麻烦?通过项目而不是通过框架来学习PHP。

下一部分,“我应该从头开始创建自己的框架” - 这是一个通用的编程问题,如果你被要求从Web服务中获取一些数据,那么哟首先编写套接字层,然后写入加密的协商协议,然后编写字符串处理函数等 - 可能不是 - 你会使用库(curl?)代替,为什么?因为你知道它有效,而且它会比你做的任何东西都好 - 而且它会节省你的时间。现在,像PHP框架这样的东西也是如此 - 如果你认为你可以做得比同行评审的开源框架做得更好 - 那就马上进行并给它一个机会,但是你不太可能超过很快就会对Cake,Laravel等图表。

(这里有一个注释 - 如果你有一个超级特定的问题没有现有的通用框架解决,你可能想要创建自己的框架,但这不太可能)

我将重新解释你问题的最后一部分,使其显得非常明显 - 而不是我应该尝试不使用Composer和PHPUnit(用于自动加载和测试)?这对我的学习过程有帮助吗?我认为你要问的是,在一般意义上 - “我想做一个PHP项目,我应该使用像Composer和PHPUnit这样的生活质量工具来制作我的生活更轻松“ - 答案当然是肯定的,但只有这是一个真实的项目,如果你这样做了一个星期然后去掉它,那么创建一个合适的项目结构就没有意义了。 / p>

我建议你也考虑将Gulp与浏览器同步一起使用 - read this,这将使你的生活变得更加容易所有的PHP项目,而不仅仅是这一个(因为你将有一些前端输出)

无论如何,我希望这能让你有所思考:)

答案 1 :(得分:0)

我不能谈论PHP的细节,但如果你想了解框架是如何工作的,你一定要自己尝试构建一个框架!

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