第1章 symfony介绍
symfony能做什么?使用symfony需要掌握哪些知识?本章将回答这些问题。
1.1 symfony简介
开发框架(framework)可以自动化地完成一些特定的开发模式来简化应用程序开发过程。开发框架还使程序代码结构化,使用开发框架,开发人员可以写出更好、更易读、更容易维护的代码。总之,开发框架简化了编程,因为它把复杂的操作封装成了简单的语句。
symfony是一个完整的Web应用开发框架,它为加速Web应用开发提供了几个关键功能。首��,它把Web应用的业务规则,服务逻辑以及表现页面分割开来。它还提供了大量的工具和类,以缩短开发复杂Web应用的时间。另外,它把一些常用的任务变成了自动化的方式执行,从而使开发人员能够完全专注于每个程序独特的地方。这三个优点综合起来就意味着每次开发新的Web应用的时候不用从头做了!
symfony完全由PHP 5编写。它经过了广泛的测试并被用于很多实际的项目,事实上一些高访问量的电子商务网站正在使用symfony。symfony与包括MySQL,PostgreSQL,Oracle还有Microsoft SQL Server在内的大多数数据库系统兼容。symfony能够在*nix与Windows平台上运行。我们现在来看一下symfony具体有哪些功能。
1.1.1 symfony的功能
symfony是为了满足下面的需求而开发的:
在大多数平台上都能够很容易安装和配置(保证能运行在标准*nix和Windows平台上)。
不依赖某种特定的数据库。
多数情况下容易使用,并且有足够的弹性来实现更复杂的功能。
遵循惯例重于配置原则——开发人员只需要配置与惯例不同的部分。
能够适应大多数Web*佳实践与设计模式。
可供企业使用——能够适应现有的IT策略与体系,并且足够稳定适合长期项目。
非常易读的代码、带有phpDocumentor注释,维护起来很轻松。
易于扩展,允许与非symfony的库进行整合。
自动化Web项目功能
Web项目的大部分功能在symfony中都能自动实现,如下:
内建的国际化层能够实现数据与界面翻译,以及内容本地化。
表现(presentation)部分使用了模板和布局,不懂任何框架知识的网页设计师也可以掌握。辅助函数封装了大量的代码从而减少了表现部分的代码。
表单支持自动验证和重新提交,这确保了数据库里的数据质量,用户体验也更好。
输出转义能够保护程序不受到利用错误数据的攻击。
缓存管理功能减少了网络带宽和服务器负载。
使用验证与证书功能能很方便地实现受限制区域和用户权限的管理。
路由与智能的URL使网页的网址容易被搜索引擎索引。
内 建的E-mail与API管理使Web应用比传统的浏览器交互更灵活。
数据列表提供了自动的分页、排序和筛选功能,用起来十分方便。
Factories,plug-ins,还有mixins提供了高层次的扩展性。
容易使用的Ajax交互,以一行代码(辅助函数helper)就能封装跨浏览器支持的JavaScript。
开发环境与工具
symfony可以完全定制以满足有自己代码规范与项目管理规则的企业。它自带了一些开发环境,还有多种工具来实现自动化软件工程任务:
代码生成工具,非常适合于原型设计与一键式后台管理。
内建的单元测试与功能测试框架,为测试驱动的开发提供了理想的工具。
调试工具条,能够把当前页面***需要的所有信息显示出来,从而加快调试速度。
命令行工具,能够实现两台服务器之间自动化部署。
能够有效地即时更新配置。
日志功能,让管理员能够掌握程序的一举一动。
1.1.2 谁开发了symfony?为什么要开发symfony
symfony的**个版本由项目发起者同时也是本书的合著者Fabien Potençier于2005年10月发布。Fabien是Sensio(http://www.sensio.com/)的CEO,Sensio是一个法国的网络机构,以其对Web开发的创新见解而知名。
早在2003年,Fabien研究了当时的PHP开源开发工具,发现没有一个能够满足前面所述这些需求。PHP 5发布的时候,他发现现有的工具已经都很成熟,足以整合到一个全功能的框架里。随后他花了1年的时间开发了symfony的核心,这个核心基于Mojavi MVC(Model-View-Controller)框架,Propel ORM(object-relational mapping),还有Ruby on Rails的模板辅助方法。
Fabien*初是为了Sensio的项目而开发symfony,因为一个**的开发框架能大大加快开发效率。它使得Web开发更直观,开发的程序更健壮更容易维护。这个框架*初在一个出售女性内衣的零售商的电子商务网站项目中应用并取得了成功,随后被用到了其他的项目中。
在成功地将symfony运用于几个项目之后,Fabien决定用开源的许可证(license)来发布symfony。他这么做了,把自己的工作成果捐献给社区,并且收集用户的意见来改进框架,展示Sensio的经验,因为这样做本身也是一种乐趣。
注意 为什么是“symfony”而不是“FooBarFramework”呢?因为Fabien想用一个简单的名字,包含代表Sensio的“s”还有代表framework的“f”,并且容易记忆,不跟其他的开发工具名字相似。另外,他不喜欢大写字母。尽管不是标准的英语,Fabien选择了“symfony”,并且symfony也是这个项目的名称。另外一个项目名称是“baguette”。
要成为一个成功的开源项目,symfony需要大量的英文文档,这样才能使更多的***使用symfony。Fabien请Sensio的职员François Zaninotto(本书的另一位作者)仔细研读源代码以撰写电子版的手册。写作花了不少时间,但是当项目公开的时候,它**的文档吸引了不少***。接下来的事情已经人尽皆知,就什么也不用说了。
1.1.3 symfony社区
当symfony的网站(http://www.symfony-project.com/)推出后,全世界许多的***下载、安装、阅读了在线文档,并开发了他们自己的**个用symfony实现的程序,社区开始热闹起来。
当时Web应用程序开发框架正开始流行,***们十分需要全功能的PHP开发框架。symfony由于良好的代码质量和大量详实的文档而成为一个引人注目的解决方案,这也是它相对于其他框架的优势。很快就有志愿者参与进来,提出修改或改善的意见,校对文档,并参与其他一些必要的工作。
社区欢迎所有愿意参与的人加入symfony开发,并提供公开的源代码仓库和ticket系统。目前symfony的代码主干主要还是由Fabien维护,这保证了代码的质量。
现在,symfony的论坛、邮件列表,以及IRC频道为整个社区提供了令人满意的支持,平均每个问题会有4个回复之多。每天都有人安装symfony。Wiki和snippets部分也汇集了大量的用户提交的文档。每个星期平均会出现5个新的symfony项目,而且这个数字还在不断地增加。
symfony社区是这个框架的第三个力量,我们希望读了本书后你能加入到这个社区中来。
1.1.4 symfony适合我吗
不论你是PHP 5专家或Web应用程序开发的新手,你都能用symfony。决定是否使用symfony的主要因素是你的项目的规模。
如果你想开发一个只有5到10个网页的简单网站,少量的数据库访问,并且不需要保证速度或者提供文档,那么你只要用PHP就够了。这种情况下使用Web开发框架并没有太大的价值,而且面向对象或者MVC模型会使开发速度变慢。另外,symfony在只能以CGI模式运行PHP的虚拟主机环境下并不能很有效率地运作。
另一方面,如果你要开发一个复杂一点的,有更多业务逻辑的Web应用程序,那么仅仅使用PHP是不够的。如果你打算以后维护或扩展你的应用程序,那么你的代码应该是简洁、易读和**的。如果你打算在用户界面中方便地使用*新的技术(例如Ajax),你不可能只是写几百行JavaScript代码。如果你想愉快而且快速地开发,那么仅使用PHP可能会令你失望。上面这些,就是symfony适合你的原因。
当然,如果你是一个专业的Web开发人员,已经知道了Web应用框架的所有优点,并且需要一个成熟的、具有详细文档和一个大社区支持的Web应用框架。那么不要再犹豫了,symfony就是你的解决方案。
……