Încercarea de a compara tehnologia, fiecare dintre ele având un număr mare de fani - este o sarcină ingrată. Există întotdeauna o șansă de a pierde ceva, mai ales dacă ați făcut deja o alegere pentru dvs. Prin urmare, în acest articol, vom încerca să înțelegem în mod nemijlocit ce simfonii2 și yii2 sunt la fel, lăsând alegerea finală a cadrului pentru cititorii noștri.
Ce să alegi: Symfony2 vs Yii2
Symfony2 și Yii2 sunt cadre PHP full-stack. Ambele au cod open source, care se află pe Github. Documentația pentru ambele cadre este disponibilă atât în limba engleză, cât și în limba rusă. În Yii2, aplicațiile sunt organizate în conformitate cu MVC, iar Symfony2 are doar un model și un controler. În Yii2, precum și în Symfony2, este folosit un spațiu de nume, astfel încât componentele, widgeturile și modelele sunt izolate unele de altele. Cu această organizare a structurii proiectului, codul este mult mai ușor de scris decât în prima versiune a lui Yii.
Ce ar trebui să fac pentru a începe cu fiecare cadru?
Cadrul Yii2 poate fi instalat în două moduri: folosind compozitorul sau manual. Dezvoltatorii recomandă alegerea primei metode, este de înțeles, pentru că în viitor va trebui să instalați extensii sau să actualizați cadrul, ceea ce este mult mai convenabil de făcut prin rularea unor comenzi în Composer.
Aceleași două metode sunt, de asemenea, disponibile pentru Symfony2. Dezvoltatorii recomandă utilizarea programului de instalare pentru a accelera procesul de creare a unei aplicații. Dar dacă doriți, puteți folosi compozitorul, ca în cazul lui Yii2.
După instalarea Yii2 veți primi o aplicație web realizată pe șablonul de bază, dar există și o opțiune pentru instalare fără ea sau cu șablonul avansat. Este posibil să creați propriul șablon. Symfony2 oferă de asemenea o demonstrație, dar trebuie să o instalați într-o comandă separată.
Cu toate acestea, Symfony2 are o oportunitate interesantă de a instala diferite distribuții, ascuțite pentru a crea unul sau altul funcțional, de exemplu:
- Versiunea standard este instalată în mod prestabilit.
- Hello World Edition ar trebui să fie utilizat pentru a crea repere.
- Symfony CMF Standard Edition este potrivit pentru crearea unui CMS.
- Symfony REST Edition are funcționalitatea REST necesară.
Procesul de dezvoltare
Cadrele PHP sunt concepute pentru a reduce nevoia de sarcini repetitive. Yii2 câștigă mai multă popularitate decât Symfony2 atunci când vine vorba de procesul de dezvoltare, deoarece reduce semnificativ timpul de dezvoltare în sine. Ca rezultat, vă petreceți mult mai puțin timp pe sarcini repetitive și petreceți o parte productivă a adaptării aplicației dvs. web.
În Yii2 există un modul pentru generarea codului numit Gii. Este vizual, rulează în browser și vă permite să generați în mod convenabil următoarele elemente:
- Clase active de înregistrare;
- forme;
- Controlere și vizualizări pentru CRUD;
- noi clase de controlori;
- "Schele" pentru module și fișiere pentru extensii Yii2.
Dacă vă place linia de comandă, atunci bine ați venit la Symfony2. SensioGeneratorBundle este responsabil pentru generarea de "schelete" pentru blocuri, formulare și controlere CRUD.
În ceea ce privește rutarea, Symfony2 are mai multe opțiuni aici, de exemplu, configurația flexibilă a rutelor importate. precum și personalizarea rutelor prin intermediul unor condiții.
Trebuie remarcat faptul că Yii2 vine cu Bootstrap și oferă widget-uri și stiluri gata făcute. Symfony2 nu facilitează în vreun fel lucrarea frontendenilor și trebuie să vă conectați singur stilurile. De asemenea, în Symfony2 nu există widget-uri încorporate.
productivitate
Datele de referință ale benchmark-ului php (Symfony 2.7.7 și Yii 2.0.6):
- numărul de solicitări pe secundă pentru Symfony2 a fost 101,99, pentru Yii2 - 379,77;
- Suma maximă de utilizare a memoriei pentru Symfony2 a fost de 3,21, pentru Yii2 era de 1,37.
Astfel, Yii2 prezintă rezultate mai bune decât Symfony2. Dezvoltatorii Yii2 declara. că atingerea unor performanțe ridicate este întotdeauna principalul obiectiv al cadrului. Cu toate acestea, potrivit site-ului BuiltWith. Atât Yii2 cât și Symfony2 sunt folosite în proiecte mari:
Am folosit Symfony2 pentru multe dintre proiectele noastre - de la serviciul de monitorizare a calității drumurilor la site-ul pentru fotografi - și putem spune cu încredere că ne place să lucrăm împreună cu el pe proiecte mari. Apropo, mai devreme am împărțit deja câteva trucuri pentru a îmbunătăți performanța proiectului pe Symfony2 cu Doctrine2 ORM.
Oportunități de extindere
- FOSUserBundle - folosit pentru a gestiona utilizatorii (trimiterea de date despre ele către baza de date și obținerea de informații din aceasta).
- FOSRestBundle - oferă instrumente pentru construirea aplicațiilor REST.
- KnpMenuBundle - vă permite să creați meniuri orientate pe obiecte.
- StofDoctrineExtensionsBundle - folosit pentru a integra în extensiile de proiect DoctrineExtensions.
- LiipImagineBundle - oferă posibilități de manipulare a imaginilor utilizând biblioteca Imagine.
Ce este folosit în Yii2 pentru a efectua aceste funcții?
- Pentru a gestiona utilizatorii - extensia yii2-user-management. Pentru REST, extensia este restul yii2.
- Pentru a crea un meniu, utilizați widget-ul Meniu (yii \ widgets \ Menu).
- Pentru a lucra cu bazele de date - ActiveRecord ORM.
- Pentru a utiliza biblioteca Imagine, extensia este yii2-imagine.
Atât Yii2 cât și Symfony2 permit utilizarea de biblioteci terțe în proiecte. Pentru a face acest lucru, trebuie să le instalați cu Compozitor, să efectuați configurația și să le prescrieți în autoloader.
testarea
Symfony2 este integrat cu biblioteca PHPUnit. Testele ar trebui să fie în subdirectorul pachetului, pe care îl vor testa. Dacă urmați acest principiu, atunci toate încercările proiectului pot fi efectuate cu ajutorul acestei comenzi:
Yii2 este integrat cu Codeception, care va trebui să instalați la nivel global și să efectuați anumite setări. După aceasta, testele pot fi executate din dosarul / var / www / yii2 / basic / tests /. Pentru a efectua teste de acceptare în oricare dintre cadre, va trebui să utilizați codec. Există, de asemenea, opțiunea de a conecta codec la Symfony2. Pentru a efectua testări de acceptare, puteți încerca să utilizați pachetul PHPUnit cu Selenium.
Trebuie remarcat faptul că pentru a simplifica testarea în Yii2 trebuie să utilizați implementarea dependențelor. În practică, acest lucru înseamnă că obiectele aplicației nespecifice ar trebui să fie alocate stratului de domeniu, iar codul responsabil pentru furnizarea serviciilor este pentru componentele aplicației (care sunt ceva de genul variabilelor globale). Cu toate acestea, nuanța este că clasa de serviciu trebuie să moștenească clasa yii și datorită acestui serviciu un proiect nu poate fi folosit în altul. Symfony2 nu are această cerință.
Ce cadru ar trebui să aleg: Symfony2 sau Yii2? Concluzii și observații
Răspunsul la întrebarea "Ce este mai bine: Symfony2 sau Yii2"? nu există. În ceea ce privește cadrele care trebuie să aleagă: Symfony2 sau Yii2, atunci, conform observațiilor noastre, apare următoarea imagine:
YII2 dragoste pentru simplitate și viteză, precum și utilizarea deplină a arhitecturii MVC. Deseori se ține seama de ușurința învățării API-ului. Dezavantajele lui Yii2 includ nu rutarea prea puternică și prezența unui număr mare de widget-uri, tuning-ul și învățarea cărora poate dura mult timp.
Printre avantajele sistemului Symfony2 sunt setările flexibile de rutare, încorporarea în cache și utilizarea șablonului Twig (dar există și o modalitate de a utiliza Twig în Yii2, de asemenea). Dezavantajele includ, de obicei, prezența unui număr mare de entități. Sintaxa de adnotări nu este, de asemenea, pe placul tuturor.
Ușurința de instalare, utilizarea unui spațiu de nume, ușurința de testare și un număr mare de extensii se pot lauda cu ambele cadre considerate. Dar cel mai bun mod de a înțelege ce este potrivit pentru dvs. personal este să instalați Symfony2 și Yii2 și să încercați să scrieți prima aplicație.