挑战!将 Symfony2 框架打包为一个文件——介绍篇

挑战!将 Symfony2 框架打包为一个文件——介绍篇

Chris Yue No Comment
Posts

这篇文章是 Symfony 项目组老大 Fabien Potencier 的又一系列教程。一般来说,Fabien 的文章都会有很多他自己对框架以及编程的思考,有很多值得大家学习的地方。以前我也翻译过他的另一系列《使用 Symfony 组件创建自己的框架》,有兴趣可以看看,我相信对大家特别是正在学习 sf 框架的同学会有很多的帮助。

此为“打包系列”第一篇,我真心觉得没太多要详细翻译的意义,不过为了此系列的完整性,还是简单翻译一下。想查阅详情的请见原文

正文开始:

哥已经疯了,对追求小而美的事物已经达到充满怨念的地步,但我同时又是 Symfony 这个进击的巨人的作者,总共有八万多行代码,没法我就喜欢把写代码推向某种形式的极致(译者:要么最小要么最大?)

早在 1985 年,我就为我的父母写了一个理财类的软件,那时我还是个只有 12 岁的红领巾。后来我还赢得了“10 行代码游戏”挑战赛,代码被发表到了法国某杂志上。

在 2009 年,我在 twitter 上发布了小于 140 个字节的依赖注入管理器,同时也发布了一个同样一条 tweet 就可以装下的框架

这一类尝试往往会让我有打怪升级的感觉,刚才说的依赖注入管理器 Twittee 虽然只是尝试,但慢慢演化成了 Pimple,一个用在 Silex 框架的依赖注入管理器,而Silex 是一个基于Symfony组件的微框架。

所以呢,做这些尝试不仅仅只是在刷分刷成就,而是在尝试从不同的方式解决现有的问题,并挖掘在实际使用中也有帮助的方式。

2013 年……挑战达人又回来了,这一次我打算压缩 Symfony 到一个文件的程度,绝不使用 Silex 或者 phar 什么的作弊器,就是一个可读的文件:从部署静态文件到控制器,从模板到 composer 配置管理,应有尽有。

为什么打算做这事儿呢?

因为完成此任务离我的 PHP 圣杯橙色武器成就又近了一步,当然除此之外还有其他的一些大家都会觉得很好玩的原因。

首先,所谓看蓝猫学蓝猫……你们可以从中学到很多 Symfony 的技术内幕,特别是内幕的内幕 Kernel 组件的应用。目前有很多关于 HttpKernel 组件的介绍,让许多开发人员都对 Symfony 对用此组件处理请求都非常娴熟,运用自如了,官网上甚至还有一篇使用此组件非常详尽完整的攻略

但是大家都忽略了 Symfony Kernel,其实这也是非常强力的一个组件,我希望此系列文章能让大家认识它,并希望更多的开源项目能使用他(译者:私生子的节奏……)

其次我希望大家能看到 Symfony 框架强大的灵活性,如果你是 Symfony 开发人员,我将带你走进 Symfony 的内部,让你了解 Symfony 底层工作原理

还有一个实际的好处是给报告 bug 带来了方便。目前 Symfony 的一些 bug,往往因为第三方 bundle,或者配置不当什么的,很难重现,这个时候我们一般让 bug 提交者 fork 一个 Symfony standard edition 项目,重现问题后在给我们发回来,但这样做太麻烦了,不过 Silex 处理这类问题就方便一些,报告者可以直接把代码写在同一个文件里面重现它。假如我们也能把 Symfony 给整成一个文件那就是个巨大的进步。

不仅如此,如果只是为了在一些小环境里面尝试新功能,这么做也有好处。几周前,有一哥们儿发了一个新 api,试图简化 Symfony 目前的安全配置系统。为了更好的感受新 api 带来的改变,我打算起一个小项目专门用来测试不同的常用配置场景。如果框架文件只有一个,那么此过程将会更方便。

能将整个框架打包也对你教人使用 Symfony 特别是使用 Symfony 某个特定功能提供帮助。

微框架 vs 完整框架

我写了一个 Silex 微框架,现在又想把 Symfony 压缩成一个文件,那是不是意味着我又要整一个跟 Silex 差不多的微框架?

微框架是什么?微是指精简到极限,框架是应用程序最底层最抽象那一层工具集合。

对我而言,微小并不意味着少,框架用户从来不关心你这框架写了多少行代码。

对我而言,微小意味着更少的架构,更少的限制,更少帮用户提供的开发方式。而相反完整的框架则提供了默认的代码组织方式以及更多的功能能让你更快的开始开发,并让你更轻松的了解项目的运作方式。

而微框架则让用户来选择代码组织方式,需要的功能,以及以何种方式来写代码。

两种不同但都正确的方式,你在使用过程中慢慢感受,而不是只看代码行数来比较。

开始挑战!

将一个完整的框架压缩在一个文件里是否可能?并且是否可以在 200 行内达成此成就?请各位放松坐好,系上安全带,我将带你们到达见证奇迹的时刻。并且在旅途中我将给大家介绍 Symfony 的工作原理,并且教大家一些使用 Symfony 的小技巧。

介绍就到此结束,下一章我们将开始对 Symfony Standard Edition 进行拆迁整治工作。

(译者:其实我根本不懂英语前面翻译的都是我瞎猜的)

下一章节

挑战!将 Symfony2 框架打包为一个文件——介绍篇 by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

文章不错,我要帮站长分担建站费!
天使投赏人

发表评论

four × ten =