415 12
发新话题
打印

Symfony简介

Symfony简介


Symfony能做什么? 使用Symfony需要掌握哪些知识? 读完这一章你就知道答案了。

   
     通过自动化完成一些特定的开发模式,框架能简化应用程序开发。 框架还可以为程序代码增加结构,从而促使程序员编出更好、更易读的、更容易维护的代码。最终,框架大大简化了程序编写,因为它把复杂的操作封装成了简单的声明。

     Symfony是一个完整的web应用开发框架,它为加速开发提供了几个关键功能。首先,它把web应用的业务规则,服务器逻辑还有表现页面分割开来。它为减少开发复杂web应用提供了大量的工具、类。另外,它把一些常用的任务变成了自动化的方式从而使开发人员能够完全专注于一项应用任务的细节。这些优点综合起来的结果就是我们每次开发新的web应用的时候不用重新发明轮子了!

     Symfony完全由PHP 5编写。它经过了广泛的测试并被用于很多实际的项目中,一些高访问量的电子商务网站正在使用Symfony。Symfony与包括MySQL、PostgreSQL、Oracle还有Microsoft SQL Server在内的大多数数据库系统兼容。Symfony能够在*nix与Windows平台运行。我们现在来看一下Symfony具体有哪些功能。

    转载注明:PHP开发资源网(http://bbs.phpre.com/)

[ 本帖最后由 Symfony-cn 于 2007-6-14 21:02 编辑 ]

TOP

Symfony的功能

>Symfony是为了实现下面的功能而开发的:

>能够在在大多数平台上很容易的安装配置 (保证能在标准*nix和Windows平台)

>不依赖某种特定的数据库

>多数情况下容易使用,并且有足够的弹性来实现更复杂的功能

>遵循惯例重于配置原则(convention over configuration)--开发人员只需要配置与惯例不同的部分

>能够适应大多数web最优方法(best practices)与设计模式(design patterns)

>可供企业使用--能够适应现有的IT策略与体系,并且很稳定适合长期项目

>非常易读的代码、带有phpDocumentor注释,维护轻松

>易于扩展,允许与非Symfony的库进行整合

[[i] 本帖最后由 Symfony-cn 于 2007-6-14 21:04 编辑 [/i]]

TOP

自动化Web项目功能

>Symfony能够自动化web开发的大部分要素:

>内建的国际化层能够实现数据与界面翻译,还有内容本地化。

>表现部分由于使用了模版和布局,不懂任何框架知识的网页设计师也可以掌握。辅助函数(helpers)封装了大量的代码从而减少了表现代码的数量。

>表单支持自动验证和重新提交,这确保了数据库里的数据的质量,用户体验也更好。

>输出转义能够保护程序不受到通过错误数据进行的攻击。

>缓存管理功能减轻了带宽和服务器消耗。

>使用验证与证书功能能很容易的实现受限制区域还有用户权限管理。

>路由与漂亮的URL使网页的网址容易被搜索引擎接受(search-engine friendly)。

>内建的e-mail与API管理使web程序超越传统的浏览器交互(browser interactions)。

>方便的数据列表提供了自动的分页、排序还有筛选功能。

>Factories, plug-ins, and mixins provide a high level of extensibility.

>Ajax交互很容易实现,以一行代码(辅助函数helper)去封装跨浏览器支持的Javascript

TOP

开发环境与工具

symfony可以完全的定制以满足有自己代码规范与项目管理规则的企业。

它自带了一些开发环境还有多种工具来实现自动化软件工程任务:

>代码生成工具非常适合于原形设计与一键式后台管理(one-click back-end administration)。

>内建的单元测试与功能测试框架为测试驱动的开发提供了完美的工具。

>测试工具条能够把当前页面的所有开发者需要的信息显示出来从而加快调试速度。

>命令行借口使两台服务器之间部署自动化。

>能够有效地即时更新配置。

>记录功能让管理员能够掌握程序的一举一动。

TOP

谁开发了Symfony?为什么要开发Symfony?

Symfony的第一个版本由项目发起者同时也是本书的合著者Fabien Potencier于2005年10月发布。Fabien是Sensio (http://www.sensio.com/) 的CEO,Sensio是一个法国对web开发有创新见解的知名网络机构。

早在2003年,Fabien研究了当时的PHP开源开发工具,发现没有一个能够满足上面的这些需求。PHP 5发布的时候,他意识到现有的工具已经都很成熟,很难整合到一个全功能的框架里。随后他花了1年的时间开发了symfony的核心,这个核心基于Mojavi MVC框架,Propel ORM,还有Ruby on Rails的模版辅助函数。

Fabien最初是为了Sensio的项目开发了symfony,因为一个高效的开发框架能大大加快开发效率。它使得开发更直观,开发的程序更健壮更容易维护。这个框架最初在一个女性内衣的零售商的电子商务网站的项目中应用并取得了成功,随后被用到了其他的项目中。

在成功地将symfony运用于几个项目之后,Fabien决定用开源的协议来发布symfony。他之所以这么做是为了把自己的工作成果捐献给了社区,并且收集用户的意见来改进框架,展示Sensio的经验,另外这是一件有意思的事情。

NOTE 为什么是"symfony"而不是"FooBarFramework"呢?因为Fabien想要一个简单的名字,包含代表Sensio的"s"还有代表framework的"f",并且容易记忆,不跟其他的开发工具名字相似。另外,他不喜欢大写字母。尽管不是标准的英语,"symfony"成为了Fabien的选择,并且symfony也是这个项目的名称。另外一个项目名称是"baguette"。

要成为一个成功的开源项目,symfony需要大量的英文文档,这样能使更多的开发者使用symfony。Fabien请Sensio的职员Francois Zaninotto(本书的作者)深入源代码来写电子版的手册。写作花了不少时间,但是当项目公开的时候,它优秀的文档吸引了不少开发者。其余的就什么也不用说了

TOP

Symfony社区

当Symfony的网站(http://www.symfony-project.com/)推出后,全世界许许多多的开发者下载、安装、阅读了在线文档,随后去开发了他们的第一个Symfony的程序,社区开始热闹起来。

中文支持社区:PHP开发资源网(http://bbs.phpres.com)论坛 > Symfony开发框架专区
                     Symfony中国: http://symfony-project.cn/ 翻译和创作关于Symfony应用。

当时web应用程序开发框框架正在变得流行,开发者们对全功能的PHP开发框架的需求很高。Symfony由于代码质量还有文档的数量成为一个引人注目的解决方案,这也是它对其他框架的优势。很快就有志愿者参与进来,提出修改或增强的意见,校对文档,还有参与到其他一些必要的工作中来。

我们欢迎所有愿意参与的人加入symfony开发,我们提供公开的源代码仓库还有ticket系统。目前symfony的代码主干主要还是Fabien在维护,这保证了代码的质量。

目前,symfony的论坛,邮件列表,还有IRC频道为整个社区提供了很优秀的支持,平均每个问题会有4个回复之多。每天都有人安装symfony,wiki与代码片断部分汇集了大量的用户提交的文档。每个星期平均会出现5新的个symfony项目,这个数字还在不断地增加。

symfony社区是这个框架的第三个力量,我们希望读了本书后你能加入到这个社区中来。

TOP

Symfony适合我吗?

不论你是PHP 5专家或Web应用程序开发的新手,你都能用symfony。决定是否使用symfony的主要因素是项目的大小。

如果你想开发一个只有5到10个网页的简单网站,少量的数据库访问,并且不需要保证速度或者提供文档,那么你只要用PHP就够了。这种情况下使用web开发框架并没有太大的价值,而且面向对象或者MVC模型会使开发速度变慢。另外,symfony在只能在CGI模式下运行PHP的虚拟主机环境下并不能很有效率的运作。

另一方面,如果你要开发一个更复杂的有更多业务逻辑的web应用程序,那么单独使用PHP是不够的。如果你打算以后维护或扩展你的应用程序,那么你的代码需要是简洁,易读和高效的。如果你打算在用户界面中方便的使用最新的技术(例如Ajax),你不能只是写几百行Javascript代码。如果你想愉快而且快速的开发,那么单独使用PHP可能会令你失望。上面这些,就是symfony适合你的原因。

当然,如果你是一个专业的web开发人员,你已经知道了web应用框架的所有优点,并且你需要一个成熟的,具有详细文档和一个大的社区支持的we应用框架。那么不要再犹豫,symfony就是你的解决方案。

提示 如果你想看比较直观的演示,建议去symfony的网站上的screencast。看了以后你会发现使用symfony开发是多么快速而愉快。
基本概念

在开始学习symfony之前,有几个概念需要要理解。如果你已经知道OOP、ORM、RAD、DRY、KISS、TDD、YAML还有PEAR你可以跳过本节。

TOP

Symfony本身是由PHP 5 (http://www.php.net/) 开发的,symfony专注于利用PHP 5制作网络应用程序。所以,想要彻底地了解symfony框架必须要对PHP 5有十分深刻的理解。

建议熟悉PHP 4但刚刚接触或者不熟悉PHP 5的开发者专注于PHP 5语言的面向对象模型部分。

TOP

面向对象程序设计 (OOP)

我们在本章不去详细解释面向对象程序设计(OOP),因为这个话题可以写一本书了。由于symfony大量运用了PHP 5中的面向对象机制,面向对象程序设计(OOP)是学习symfony的先决条件。

维基百科这样解释OOP:

面向对象程序设计(OOP)可以被视作一种在程序中包含各种独立而又互相调用的单位和对象的思想,这与传统的思想刚好相反:传统的面向过程程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。

PHP 5实现了面向对象中的类、对象、方法、继承等。如果你对这些概念不熟悉,建议阅读相关的PHP文档,网址如下 http://www.php.net/manual/zh/language.oop5.basic.php.

TOP

魔术方法

PHP对象的一个优势是可以使用魔术方法。 这些个方法可以不需要修改外部代码而重写一个类的默认行为。这使得PHP语法有更少的冗余性和更具有扩展性。这些方法很好识别,为们他们都是以双下划线(__)开始的。

例如, 当显示一个对象的时候, PHP会去暗中去寻找看是否开发者定义过__toString()方法: [php] $myObject = new myClass(); echo $myObject; // Will look for a magic method echo $myObject->__toString();

Symfony使用了魔术方法, 所以你必须完全了解这些概念。 这些在PHP文档中有描述(http://www.php.net/manual/en/language.oop5.magic.php).

TOP

 415 12
发新话题