ABONAMENTE VIDEO REDACȚIA
RO
EN
Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 45
Abonament PDF

Framework-ul Symfony de la 1.0 la 3.0

Cătălin Criste
PHP Developer @Pentalog



PROGRAMARE

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.

V 1.x

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:

V 2.x

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:

V 3.x

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:

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

  1. Long Term Support - Mentenanţă pe termen lung

  2. Standard PHP Library - Librării standard PHP

LANSAREA NUMĂRULUI 149

Marți, 26 Octombrie, ora 18:00

sediul Cognizant

Facebook Meetup StreamEvent YouTube

NUMĂRUL 147 - Automotive

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects

Cătălin Criste a mai scris