symfony
symfony是一个开源的PHP Web框架。基于最佳Web开发实践,已经有多个网站完全采用此框架开发,symfony的目的是加速Web应用的创建与维护。
它的特点如下:
简单的模板功能
缓存管理
自定义URLs
搭建了一些基础模块
多语言与I18N支持
采用对象模型与MVC分离
Ajax支持
适用于企业应用开发。
Based on the best practices of web development, thoroughly tried on several active websites, symfony aims to speed up the creation and maintenance of web applications, and to replace the repetitive coding tasks by power, control and pleasure.
Symfony provides a lot of features seamlessly integrated together, such as:
simple templating and helpers
cache management
smart URLs
scaffolding
multilingualism and I18N support
object model and MVC separation
Ajax support
enterprise ready
http://linux.bokee.com
Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。同时,它还包含了很多工具和类用以缩短开发复杂的网络应用的时间。基于最佳Web开发实践,已经有多个网站完全采用此框架开发,symfony的目的是加速Web应用的创建与维护。
它的特点如下:
简单的模板功能
缓存管理
自定义URLs
搭建了一些基础模块
多语言与I18N支持
采用对象模型与MVC分离
Ajax支持
适用于企业应用开发。
一个框架结构在编程语言之上加入了新的机制,并且这些机制能够为许多特定的目标自动提供一些开发模式。一个框架结构同样为编码增加了结构,并且促使程序员编出更好、更易读的、有持续性的代码。一个框架家结构能让编程变得更加简单,因为它把复杂的程序封装成了简明的陈述。
一个框架的发展通常是以它所使用的语言所延伸出来的。一个php5框架是由一系列的用php5写成的文件组成的。
一个框架将为应用划分出层次。从整体上来说,它可以将应用分为三个层次:
*
表现逻辑层(presentation logic) 用于处理用户与软件之间的交互
*
数据源逻辑层(data source logic) 提供了一个数据库同其他数据提供者的联系通道。
*
范围逻辑层(domain logic),或者叫事务逻辑层(business logic),这是剩余的部分。它包括关于输入的计算、处理表现层中的数据,以及根据从表现层收到的指令分派调度数据源逻辑层。
网络应用框架致力于促进网络应用的开发(websites,intranets,等等)。建立一个基本的动态网站可以从现有的编程语言中轻易的实现,而PHP的知名就是由于它的简易性被广泛的应用。只需要php,你就可以查询数据库、管理会话(session,cookies)、访问服务器端文件等等。而当你需要构建一个更加复杂的站点,当事务逻辑大大的增加了用于维护的编码量的时候,你就需要一个网络应用的框架出现了。
[编辑本段]什么是symfony?
Symfony是一个完整的框架结构,设计用来帮助并加速网络应用的开发。
它是基于以下的一些观念的:
*
尽可能的兼容更多的开发环境
*
易于安装和配置
*
简单易学
*
企业级应用
*
规定而非配置,支持回调
*
在大多数情况下简洁明了,但是有足够的弹性为复杂情况做准备
*
包含大多数网站的共性
*
适应大多数 web “最佳实践(best practices)” 和 web “设计模式(design patterns)”
*
非常易读的代码、轻松维护
*
这些主要的基本概念突出了symfony的框架是使更多的公共任务自动完成,以使开发人员能够完全专注于一项应用任务的特殊细节所在。而在每次一个新的web应用建立的时候不需要重新反复劳动。
为了实现这些需求,symfony完全由PHP5写成。它已经彻底的在各种现实项目应用中被测试过,并且实际上已经应用于一些高要求的电子商务网站。它可以同大多数现有的数据库兼容,具体如下:
*
MySQL
*
PostgreSQL
*
Oracle
*
MSSQL
*
和其他数据库(如果安装了Creole驱动)
symfony的对象模型依赖于以下三个独立的层:
*
数据库抽象层(a database abstraction)
*
对象关系映射层(an object-relational mapping)
*
用于负责前台显示和后台事务的 模型-视图-控制器 模式层(a Model-View-Controller model for the front and back-office)
web项目的公共特性可以轻易的由symfony自动得到:
*
国际化(internationalization)
*
模板和助手(templating with helpers)
*
表单确认(form validation)
*
缓存管理(cache management)
*
购物车管理(shopping cart management)
*
简洁的路径(smart URLs)
*
scaffolding
*
发送邮件(email sending)
*
分页(Pagination)
*
另外为了满足企业已有的编码规范和项目管理规则,symfony可以全部重新用YAML配置文件。它是默认提供的,几个开发环境,和捆绑:
*
原型(prototyping)
*
内容管理(content management)
*
live configuration changes
*
部署(deployment)
*
单元测试(unit testing)
*
应用测试(applicative testing)
*
日志记录(logging)
*
调试(debugging)
Symfony用到了其他一些开源项目的代码:
*
Creole, 用于数据库抽象层(for the database abstraction layer)
*
Propel, 用于对象关系映射层(for the object-relational mapping layer)
*
Mojavi, 用于MVC模型层(for the Model-View-Controller model layer)
无论你是一个php5的专家还是一个在网络应用编程方面的新手都没有问题,影响你决定的最主要因素是你项目的大小。
如果你只是想要开发一个简易的5-10页的站点,只需要有限的访问数据库和几乎不考虑性能、可用性或文档,那么你只需要单独使用PHP。你将不会从网络应用的框架结构的特征中获的太多的益处,使用面向对象或MVC模式只会使你的开发变慢。Symfony运行在一个只有CGI支持的共享主机上将不会高效优异的运行。
另一方面,如果你开发大型的web应用,其中有大量的事务逻辑,那么单独使用PHP是不够的。如果你计划将来维护和扩展你的应用,你需要编写轻量级、易读的和高性能的的代码。如果你想直接使用最友好的用户交互界面(AJAX),你不能只写上数百行的Javascrīpt代码。如果你想享受并且快速的开发,那么单独使用PHP将是令人失望的。介于上述这些原因,symfony非常适合你。
当然,如果你是一个专业的web开发人员,你已经知道了web应用框架的所有优点,并且你需要一个成熟的,具有详细文档和一个大的团体支持。那么不要再犹豫,symfony就是你的解决方案。
)

