Symfony
Encyclopedia
Symfony is a web application framework
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...

 written in PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

 which follows the model-view-controller
Model-view-controller
Model–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...

 (MVC) paradigm. Released under the MIT license
MIT License
The MIT License is a free software license originating at the Massachusetts Institute of Technology . It is a permissive license, meaning that it permits reuse within proprietary software provided all copies of the licensed software include a copy of the MIT License terms...

, Symfony is free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

. The symfony-project.com website launched on October 18, 2005.

Symfony should not be confused with Symphony CMS, the Open Source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

/XSLT
XSLT
XSLT is a declarative, XML-based language used for the transformation of XML documents. The original document is not changed; rather, a new document is created based on the content of an existing one. The new document may be serialized by the processor in standard XML syntax or in another format,...

 content management system.

Goal

Symfony aims to speed up the creation and maintenance of web applications and to replace repetitive coding tasks. It requires a few prerequisites for installation: Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

, Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, Mac OS
Mac OS
Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...

 or Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 with a web server and PHP 5 installed. It is currently compatible with the following object-relational mappings: Propel
Propel (PHP)
Propel is a free, open-source object-relational mapping toolkit written in PHP. It is also an integral part of the PHP framework Symfony and was the default ORM up to, and including version 1.2.- History :...

 and Doctrine
Doctrine (PHP)
See also DataEase, whose query language is also called DQL.Doctrine is an object-relational mapper for PHP that provides persistence for PHP objects. It sits on top of a database abstraction layer...

.

Symfony has low performance overheads when dealing with an environment that supports a PHP accelerator
PHP accelerator
A PHP accelerator is a PHP extension designed to improve the performance of software applications written in the PHP programming language.- Operation :...

.

Symfony is aimed at building robust applications in an enterprise context, and aims to give developers full control over the configuration: from the directory structure to the foreign libraries, almost everything can be customized. To match enterprise development guidelines, Symfony is bundled with additional tools to help developers test, debug and document projects.

Technical

Symfony makes use of many common and well understood design patterns
Design Patterns
Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design. The book's authors are Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides with a foreword by Grady Booch. The authors are...

, such as Model-View-Controller
Model-view-controller
Model–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...

. Symfony was heavily inspired by other Web Application Framework
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...

s such as Ruby On Rails
Ruby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...

, Django and Spring.

Symfony makes heavy use of existing PHP open source projects as part of the framework, such as:
  • Propel
    Propel (PHP)
    Propel is a free, open-source object-relational mapping toolkit written in PHP. It is also an integral part of the PHP framework Symfony and was the default ORM up to, and including version 1.2.- History :...

     or Doctrine
    Doctrine (PHP)
    See also DataEase, whose query language is also called DQL.Doctrine is an object-relational mapper for PHP that provides persistence for PHP objects. It sits on top of a database abstraction layer...

    , as Object Relational Mapping layer
  • Creole, Database abstraction layer
    Database abstraction layer
    A database abstraction layer is an application programming interface which unifies the communication between a computer application and databases such as SQL Server, DB2, MySQL, PostgreSQL, Oracle or SQLite...

     (v 1.0 and 1.1, with Propel
    Propel (PHP)
    Propel is a free, open-source object-relational mapping toolkit written in PHP. It is also an integral part of the PHP framework Symfony and was the default ORM up to, and including version 1.2.- History :...

    )
  • PDO Database abstraction layer
    Database abstraction layer
    A database abstraction layer is an application programming interface which unifies the communication between a computer application and databases such as SQL Server, DB2, MySQL, PostgreSQL, Oracle or SQLite...

     (1.1, with Doctrine
    Doctrine (PHP)
    See also DataEase, whose query language is also called DQL.Doctrine is an object-relational mapper for PHP that provides persistence for PHP objects. It sits on top of a database abstraction layer...

     and Propel 1.3
    Propel (PHP)
    Propel is a free, open-source object-relational mapping toolkit written in PHP. It is also an integral part of the PHP framework Symfony and was the default ORM up to, and including version 1.2.- History :...

    )
  • PRADO, an event-driven PHP web application framework, for Internationalization support
  • Pake, command-line helper (v 1.0)
  • PHPUnit
    PHPUnit
    PHPUnit is a unit testing software framework for the programming language PHP . Created by Sebastian Bergmann, PHPUnit is one of the xUnit family of frameworks that originated with Kent Beck's SUnit. PHPUnit is hosted at GitHub .- Purpose :...

    , unit tester
  • Zend Framework
    Zend Framework
    Zend Framework is an open source, object-oriented web application framework implemented in PHP 5 and licensed under the New BSD License.-Licensing:...

    , Zend_Logger and the Zend_Cache are used for logging and caching respectively
  • Mojavi, an MVC
    Model-view-controller
    Model–view–controller is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" from the user interface , permitting independent development, testing and maintenance of each .Model View Controller...

     framework
  • Swift Mailer, a mail library


Symfony also makes use of its own components which are freely available on the Symfony Components site for various other projects:

Using plugins, Symfony is able to support JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

 frameworks and many more PHP projects, such as:
  • Prototype
    Prototype Javascript Framework
    The Prototype JavaScript Framework is a JavaScript framework created by Sam Stephenson in February 2005 as part of the foundation for Ajax support in Ruby on Rails. It is implemented as a single file of JavaScript code, usually named prototype.js...

     or jQuery
    JQuery
    jQuery is a cross-browser JavaScript library designed to simplify the client-side scripting of HTML. It was released in January 2006 at BarCamp NYC by John Resig...

    , as JavaScript framework
  • script.aculo.us
    Script.aculo.us
    script.aculo.us is a JavaScript library built on the Prototype JavaScript Framework, providing dynamic visual effects and user interface elements via the Document Object Model ....

    , for visual effects
  • PHP Less, a CSS parser based upon Less
  • TinyMCE
    TinyMCE
    TinyMCE, also known as the Tiny Moxiecode Content Editor, is a platform-independent web-based JavaScript/HTML WYSIWYG editor control, released as open source software under the LGPL by Moxiecode Systems AB. It has the ability to convert HTML textarea fields or other HTML elements to editor instances...

     or CKEditor, for Rich Text Editing
  • TCPDF
    TCPDF
    TCPDF is a free and open source software PHP class for generating PDF documents. TCPDF is currently the only PHP-based library that includes complete support for UTF-8 Unicode and right-to-left languages, including the bidirectional algorithm....

    , PHP library for generating PDF documents


As of Symfony release 1.2, no JavaScript framework is selected as the default, leaving inclusion and implementation of a JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....

 library to the developers.

Sponsors

Symfony is sponsored by Sensio, a French
France
The French Republic , The French Republic , The French Republic , (commonly known as France , is a unitary semi-presidential republic in Western Europe with several overseas territories and islands located on other continents and in the Indian, Pacific, and Atlantic oceans. Metropolitan France...

 web agency. The first name was Sensio Framework, and all classes were prefixed with sf. Later on when it was decided to launch it as open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...

, the brainstorming resulted in the name symfony (being renamed to Symfony from version 2 and on), the name which depicts the theme and class name prefixes.

Real-world usage

Symfony is used by the open-source Q&A service Askeet
Askeet
Askeet is an open source demonstrative project developed using the Symfony 1.0 Framework. The project is free under the MIT license for download, adaptation, and commercial distribution...

 and many more applications, including Delicious and the 20 million users of Yahoo! Bookmarks. As of February 2009, Dailymotion.com has ported part of its code to use Symfony, and is continuing the transition.. Symfony2 is used by OpenSky, a social shopping platform.

Development roadmap

The upcoming new release version of Symfony will include new features such as:
  • A new form generation framework, first introduced in version 1.2
  • A new admin generator (referred to as scaffolding
    Scaffold (programming)
    Scaffolding is a meta-programming method of building database-backend software applications. It is a technique supported by some model-view-controller frameworks, in which the programmer may write a specification that describes how the application database may be used...

     in Rails
    Ruby on Rails
    Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...

    ) which makes use of the new form framework and is no longer implemented as a helper.
  • Object relationship mapping declared in a separate plugin, rather than being integrated into the ORM
  • Choice of ORM (Doctrine or Propel, or a combination of the two)
  • Classes re-factored for looser coupling between objects, allowing for more user flexibility in using objects and fewer dependencies (similar in principle to the Zend Framework
    Zend Framework
    Zend Framework is an open source, object-oriented web application framework implemented in PHP 5 and licensed under the New BSD License.-Licensing:...

    ).
  • Routing rules and route objects more closely follow REST
    Rest
    Rest may refer to:* Leisure* Human relaxation* SleepRest may also refer to:* Rest , a pause in a piece of music* Rest , the relation between two observers* Rest , a 2008 album by Gregor Samsa...

     design principles.

Releases

Color Meaning
Red Release no longer supported
Green Release still supported
Blue Future release

Version Release date Support PHP version End of maintenance Notes
1.0 January 2007 3 years >= 5.0 January 2010
1.1 June 2008 1 year >= 5.1 June 2009 security-related patches will be applied until June 2010
1.2 December 2008 1 year >= 5.2 November 2009
1.3 November 2009 1 year >= 5.2.4 November 2010
1.4 November 2009 3 years >= 5.2.4 January 2013 1.4 is identical to 1.3, but does not support the 1.3 deprecated features.
2.0 July 2011 >= 5.3.2

Further reading

  • Potencier, Fabien and Zaninotto, François. (2007). The Definitive Guide to symfony. Apress
    Apress
    Apress, Inc. is a publisher of information technology books, based in New York City. It is a division of Springer Science+Business Media.Apress was founded by authors Gary Cornell and Dan Appleman. Its original name was Author's Press, shortened to APress, then Apress. In 2003, Apress purchased...

    . ISBN 1-59059-786-9.
  • Potencier, Fabien. (2009). Practical symfony (2009). Sensio Labs Books. Doctrine
    Doctrine (PHP)
    See also DataEase, whose query language is also called DQL.Doctrine is an object-relational mapper for PHP that provides persistence for PHP objects. It sits on top of a database abstraction layer...

     edition, ISBN 978-2-918390-06-0, Propel
    Propel (PHP)
    Propel is a free, open-source object-relational mapping toolkit written in PHP. It is also an integral part of the PHP framework Symfony and was the default ORM up to, and including version 1.2.- History :...

     edition, 978-2918390077, and Spanish edition available on lulu.com.
  • Fabien Potencier, Hugo Hamon: Symfony, Mieux développer en PHP avec symfony 1.2 et Doctrine, Eyrolles 2009, ISBN 978-2-212-12494-1, French
  • Tim Bowler, Wojciech Bancer (2009). Symfony 1.3 Web Application Development, Packt
    Packt
    Packt, pronounced Packed, is a print on demand publishing company based in Birmingham, UK.-Company:Packt published its first book, Mastering phpMyAdmin for Effective MySQL Management, in April 2004, and continues to specialize in publishing focused books on specific technologies and solutions...

    . ISBN 978-1-84719-456-5.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK