Symfony este un framework pentru aplicaţii web php. Este scris în php şi este distribuit gratuit sub licență MIT.
În lumea php-ului, framework-ul Symfony este unul dintre cele mai cunoscute, populare, utilizate şi îndrăgite framework-uri. Aceste caracteristici se datorează faptului că are o comunitate numeroasă şi puternică în spate, are o documentaţie consistentă şi cuprinzătoare, poate fi învăţat relativ repede datorită resurselor de calitate disponibile pe internet, oferă un sistem de certificare şi un număr din ce în ce mai mare de utilizatori.
Symfony a fost inspirat din alte framework-uri web cum ar fi Ruby on Rails, Django şi Spring, şi este îndreptat spre dezvoltarea de aplicaţii enterprise.
Lucrul efectiv la acest framework a început acum aproximativ 11 ani în Paris, în iarna anului 2004, iar lansarea primei versiuni a avut loc în Octombrie 2005. Creatorul şi fondatorul acestui framework este Fabien Potencier, care a dezvoltat proiectul pentru compania sa Sensio, o companie franceză de servicii software fondată în 1998. Datorită acestui fapt, framework-ul a primit numele de Sensio Framework (toate clasele erau prefixate cu sf, ex. sfRequest, sfRouting, sfResponse).
Scopul framework-ului era acela de a oferi posibilitatea dezvoltării mai rapide de aplicaţii web într-un mod cât mai intuitiv şi sigur.
După aplicarea cu succes a acestui framework în cadrul unor proiecte interne, Fabien a decis să permită folosirea framework-ului şi de către alte persoane pentru a putea culege feedback de la utilizatorii framework-ului.
Odată cu decizia lansării proiectului ca open-source, acesta a primit numele de symfony (ulterior fiind redenumit la Symfony începând cu versiunea 2), nume ce a păstrat tema şi prefixul claselor.
Pentru a deveni un proiect de succes avea nevoie de o documentaţie bine scrisă în engleză. Pentru aceasta Fabien l-a rugat pe prietenul său François Zaninotto, cu care lucra împreună la Sensio, să-l ajute în scrierea unei documentaţii disponibile online. Într-un final, framework-ul a primit o documentaţie remarcabilă, fapt ce a dus la popularizarea framework-ului și implicit la un număr în creștere al dezvoltatorilor care începeau să-l folosească.
François a fost coordonatorul proiectului de documenaţie şi unul dintre cei care s-au implicat activ în promovarea framework-ului. Datorită lui şi tutorialelor lui, o bună parte din dezvoltatorii de aplicaţii web au început să folosească acest framework. O veste proastă însă a apărut în 2008 când a decis să părăsească core team-ul Symfony din cauza unor opinii divergente legate de filozifia scrierii de cod care a fost introdusă în versiunea 1.1.
Versiunea symfony 1.0 a fost lansată la începutul anului 2007 (versiunea php minimă cerută 5.0). A fost prima versiune stabilă lansată, iar suportul pentru ea a fost de trei ani.
Ianuarie 2010 a însemnat sfârşitul mentenanţei versiunii 1.0, un pas natural în evoluţia proiectului.
Lansarea versiunii 1.0 s-a produs nu după multă vreme de la naşterea primului copil al lui Fabien.
Versiunea symfony 1.1 a fost lansată la mijlocul anului 2008 (versiunea php minimă cerută 5.1), dar nu a fost compatibilă cu versiunea precedentă, ceea ce a făcut dificilă actualizarea proiectelor vechi la versiunea nouă.
Versiunea symfony 1.2 a fost lansată imediat după cea precedentă, la finele anului 2008 (versiunea php minimă cerută 5.2). Migrarea între aceste două versiuni a fost mult mai ușoară, deoarece nu erau schimbări mari de structură.
Ultimele versiuni din ramura 1.x au fost lansate un an mai tarziu, la finalul lui 2009. Simultan au fost lansate două versiuni 1.3 si 1.4 (versiunea php minimă cerută 5.2.4). Amândouă au fost identice, dar symfony 1.4 nu avea funcționalităţile deprecated şi era recomandată începerea unui proiect nou cu această versiune.
Versiunea stabilă care a primit suport pe termen lung (LTS1), a fost symfony 1.4, care de altfel a fost ultima versiune din ramura 1.x. Perioada de suport a fost până în ianuarie 2013.
symfony 1.4 = symfony 1.3 - chesti deprecated
Pentru că versiunile symfony 1.x foloseau la acea vreme versiuni php < 5.3 (versiune care a introdus conceptul de namespace) era nevoie de o sintaxă de incluziune a unui fişier pentru a folosi o clasă definită în interiorul lui.
require_once '/path/to/sfCoreAutoload.class.php';
sfCoreAutoload::register();
Evenimente importante:
lansarea site-ului proiectului www.symfony-project.org care avea 300k vizitatori unici pe lună.
Ca sistem de versionare era folosit Subversion.
Symfony se putea instala şi prin PEAR.
Trecerea de la versiunea 1.x la versiunea 2.x a fost un pas uriaş. Versiunea 1.x era foarte diferită faţă de versiunea 2. A fost mai mult o revoluţie decât o evoluţie a framework-ului.
Compania care era în spatele Symfony, SensioLabs, a făcut o mişcare inspirată şi a decis să rescrie tot framework-ul de la zero.
Prima lansare a Symfony2 nu a fost perfectă, dar era foarte promiţătoare. Symfony 2.0 a fost lansat în Iulie 2011 (versiunea php minimă cerută 5.3.2). Era bazată pe submodule git (la acea vreme composer nu exista).
Lansarea versiunii 2.0 s-a produs nu după multă vreme de la naşterea celui de-al doilea copil al lui Fabien. Se pare ca viaţa de nou părinte predispune la acţiuni productive pe timp de noapte, când cel mic nu te lasă să dormi :P
Versiunile 2.1, lansată in Septembie 2012 (versiunea php minimă cerută 5.3.3), şi 2.2, lansată în martie 2013 (versiunea php minimă cerută 5.3.3), erau asemănătoare cu ceea ce folosim acum, dar cu toate acestea necesită un efort destul de mare pentru a putea migra la o versiune ulterioară.
Versiunea 2.3 a fost lansată în Iunie 2013 şi a fost prima versiune LTS1 în cadrul ramurii 2.x. Versiunea 2.3 a fost dezvoltată în doar trei luni, perioada normală de dezvoltare a unei versiuni fiind de 6 luni. După această versiune schimbările introduse de celelalte versiuni ulterioare (2.4, 2.5 şi 2.6) nu au fost atât de drastice şi de regulă nu introduc incompatibilităţi. Versiunea 2.3 a introdus şi promisiunea că doar în versiunile major se vor putea introduce incompatibilităţi cu versiunile precedente. Această promisiune se regăseşte şi în strategia de versionare semantică.
Versiunea 2.4 a fost prima din ramura 2.x care nu a introdus nicio incompatibilitate cu versiunea anterioară.
Versiunile 2.7 şi 2.8 au fost lansate în 2015 mai şi respectiv noiembrie (versiunea php minimă cerută 5.3.9). Ambele versiuni au trei ani de suport.
Versiunea 2.8 a fost lansată în acelaşi timp cu versiunea 3.0.
Symfony 2.8 = Symfony 3.0 + compatibilitate cu versiuni anterioare
Evenimente importante:
utilizarea versiuni php 5.3. a reprezentat un impact major datorită introducerii namesapce-urilor, closure-urilor, funcţiilor anonime, late static binding, îmbunătăţirea SPL2 şi multe altele.
Din cauza folosirii namespace-urilor au fost necesare nişte schimbări drastice în redenumirea claselor. Astfel s-a spus la revedere prefixului sf.
installer-ul PEAR a fost schimbat cu Pyrus, un installer modern şi robust.
Doctrine folosit ca ORM.
utilizarea git ca sistem de versionare.
Versiunea 3.0 nu aduce nicio funcţionalitate nouă faţă de versiunea 2.8, doar că acele functionalităţi deprecated au fost eliminate. Versiunea 3.0 a fost lansată în noiembrie 2015 (versiunea php minimă cerută 5.5.9) , cu puţin timp înaintea începerii celei de-a treia conferinţe Symfony care a avut loc la Paris în decembrie 2015. Este prima versiune care foloseşte noul proces de lansare a versiunilor bazat pe cinci versiuni minor. Acest proces se bazează pe versionarea semantică (x.y.z+1=> fixare bug-uri; x.y+1 => modificări compatibile; x+1 => potenţiale modificări incompatibile) şi respectă un calendar prestabilit al lansărilor:
O nouă versiune minor (ex. 2.8, 3.2, 4.1) se lansează la fiecare șase luni, în mai şi în noiembrie a fiecărui an.
Versiunea 3.0 este singura versiune de până acum care nu a fost lansată imediat după naşterea unui copil de-al lui Fabien. Să sperăm că va fi de bun augur.
Versiunea 3.1 va fi lansată în mai 2015.
Noul sistem de lansare a versiunilor oferă predictibilitate asupra momentului când vor fi lansate versiunile, dar nu şi asupra ce se va lansa în fiecare versiune. În ultima chestiune, cea mai mare influenţă o va avea comunitatea. Dacă se vor găsi funcţionalităţi noi care se doresc a fi introduse în framework şi se vor găsi suficienţi oameni care să se ocupe de acestea, cu siguranţă le vom vedea în următoarele versiuni.
Privind spre viitor, Symfony 4 este deja anunţat pentru luna noiembrie a anului 2017. Încă nu ştim ce va conţine, dar avem încredere că va aduce funcţionalităţi utile celor care îl folosesc.
Mulţumim comunităţii şi core team-ului pentru crearea unui framework utilizat de atâţia dezvoltatori şi devenit un reper în lumea php-ului.
Core team-ul Symfony, conferinţa Symfony 2015 Paris
Long Term Support - Mentenanţă pe termen lung
de Șerban Țîr
de Mircea Vădan
de Augusta Ene , Cosmin Lazar