Cele mai bune cadre. Web Frameworks: o introducere pentru începători

Framework-urile PHP sunt unul dintre cele mai importante instrumente ale oricărui dezvoltator de aplicații. Ele oferă capacitatea de a dezvolta rapid și în siguranță aplicații, elimină necesitatea de a crea coduri de la zero și garantează o dezvoltare stabilă a aplicațiilor.

Cadrele PHP ajută la simplificarea problemelor complexe de codare, oferind dezvoltatorilor o platformă pentru a dezvolta aplicații web puternice într-un timp scurt. Structura PHP permite dezvoltarea rapidă a aplicațiilor ( RAD), care economisește mult timp și reduce nevoia de a începe codarea de la zero, asigurând o dezvoltare stabilă a aplicațiilor.

Fără ajutorul unei infrastructuri PHP, dezvoltarea de aplicații mobile și web se poate confrunta cu problema obișnuită pentru începători atunci când devine necesar să scrie cod și să creeze o conexiune între baza de date și aplicația care se dezvoltă de la zero. Deci folosind Cadru PHP reduce sarcina de lucru. Cel mai bun lucru despre cadrele PHP este că sunt ușor de adaptat și, de asemenea, ușor de învățat în comparație cu alte limbaje de programare.

PHP funcționează cu principiile de bază ale managementului vizualizării modelului ( MVC), care sunt șablon arhitectural, prezentat în multe alte limbaje de programare populare. Decriptarea MVC - M reprezintă date brute, V este pentru View / interfața cu utilizatorul (asta este ceea ce se vede de fapt) și C este controlerul, care este de fapt logica domeniului.

Logica domeniului este o funcție care vă permite să controlați schimbul de informații între baza de date și interfața cu utilizatorul. Acest lucru simplifică întregul proces de dezvoltare a aplicației. După ce studiezi cum funcționează MVC, veți putea lucra cu PHP Frameworks incredibil de ușor. Mai jos sunt cele mai bune cadre pentru dezvoltarea de software pentru proiecte PHP.

Laravel

Laravel este una dintre cele mai populare și cadre PHP gratuite sursa deschisa. Datorită regulilor speciale de programare, acest cadru vă ajută să creați aplicații web puternice. Laravel a fost anunțat în 2011 și a devenit în curând cel mai popular framework PHP într-o perioadă foarte scurtă de timp.

Laravel are documentare uimitoare și comunitate activă, o serie de caracteristici, inclusiv instrumente puternice de construire, aplicații cu un număr mare de containere dedicate pentru managementul inversării, un cadru de migrare comunicativ și un program de întreținere asociat unității de testare. Dezavantajul lui Laravel este viteza mica si dimensiuni mari.

Beneficiile Laravel

Symfony

Este unul dintre cele mai populare și de încredere framework-uri PHP printre dezvoltatorii experți. Symfony este un cadru puternic care ajută la minimizarea problemei structurii de codare repetitivă și este folosit pentru a crea site-uri web și aplicații excelente. În plus, acest lucru este dovedit cel mai stabilși un cadru PHP foarte popular în întreaga lume.

Este foarte flexibilă când despre care vorbim despre configurarea proiectelor și are capacitatea de a se integra cu proiecte mai mari precum Drupal, deși mecanismul său de securitate este destul de ușor de utilizat. Acest cadru combină componente PHP bogate în funcții care permit dezvoltatorilor din întreaga lume să creeze aplicații scalabile și extrem de optimizate.

Cu mai mult de 20 de componente disponibile în cadru, dezvoltatorul are posibilitatea de a experimenta și de a crea propriile sale componente proiecte în mediul RAD. API-urile Symfony au un proces simplu de integrare cu aplicații terțe și pot interacționa cu interfețe cunoscute precum ReactJSși alte framework-uri javascript.

Un număr mare de proiecte binecunoscute, inclusiv Drupal și phpBB, folosesc, de asemenea, cadrul Symfony. Intrând în mai multe detalii, Laravel, cel mai popular framework PHP, se bazează pe Symfony.

CodeIgniter

CodeIgniter este un alt cadru remarcabil, cunoscut pentru performanța sa clasică. În principiu, este o platformă open source și are capacitatea de a sprijini dezvoltarea de aplicații de generație următoare care necesită codare simplificată.

Procesul de codare în această structură este simplu, configuratia nu este complicata, poate fi lansat fără probleme. CodeIgniter este unul dintre cele mai puternice cadre PHP care oferă soluții simplificate probleme complexe cu codificare la crearea aplicațiilor web. Arhitectura sa strategică permite atât simplu, cât și management integrat proiecte.

Utilizarea CodeIgniter de către mulți dezvoltatori îl face o platformă excelentă, care este uimitor de testată și utilizată pe scară largă. Este ideal pentru programatorii noi care nu sunt familiarizați cu arhitectura și stratul MVC. Deci, dacă doriți PHP simplu și pur, CodeIgniter va fi cea mai potrivită opțiune pentru tine.

Beneficiile CodeIgniter


CakePHP

CakePHP este considerat cel mai robust cadru care oferă o arhitectură extensibilă pentru crearea, întreținerea și implementarea aplicațiilor. Gestionarea sesiunii ajută foarte mult la îmbunătățirea funcționalității aplicațiilor dezvoltate.

Cadrul oferă și opțiuni creați biblioteci autonome cu suport nesfârșit modularitate crescută. Cadrul are performanțe bune. Acest lucru se aplică proceselor de configurare și încărcare a cadrului, proceselor de rutare, precum și unor probleme legate de generarea de șabloane auxiliare. Cadrul are componente și ajutoare moderne.

Aceasta înseamnă că cadrul acceptă notificări („ mesaje rapide") datorită noilor clase FlashHelperȘi FlashComponent. Trebuie remarcat faptul că clasa a fost îmbunătățită CookieComponent, care simplifică separarea configurației pentru configurarea spațiului de nume pentru cookie-uri și gestionarea cookie-urilor de date. Management excelent al sesiunii. Anterior, în multe cadre PHP, managementul sesiunii era reprezentat de o clasă statică, ceea ce a cauzat o serie de probleme în timpul procesului de dezvoltare.

CakePHP simplifică procesul de testare a aplicației și vă permite să utilizați PHPUnit 4.x. Cadrul se mândrește cu o interoperabilitate și coerență îmbunătățite. Cadrul aplicației și cadrele plugin au aceeași structură de directoare pentru a îmbunătăți coerența între părți ale cadrului. Îmbinarea temelor și a pluginurilor. Unul dintre cele mai importante obiective stabilite pentru CakePHP a fost crearea unor teme puternice.

În timp ce lucram spre acest obiectiv, a devenit clar că temele au nevoie de aceleași capacități ca și pluginurile. Orice plugin poate fi folosit ca temă, ceea ce, la rândul său, facilitează construirea și reconectarea proceselor.

Yii

Lista principalelor cadre PHP nu ar fi completă fără Framework-ul Yii. Framework-ul Yii este un cadru genial care oferă un ajutor extraordinar cu stocarea în cache. Acest cadru a fost dezvoltat pentru munca eficienta cu AJAX. Soluții rapide pentru dezvoltare în cadrul Yii, simplifică crearea de aplicații și reduc timpul pentru aceasta.

Aplicațiile dezvoltate folosind Yii au o interfață de utilizator uimitoare și o bogăție de caracteristici uimitoare. Yii folosește managerul de dependențe Composer pentru a gestiona diferite dependențe și instalări. Yii este, de asemenea, cel mai rapid framework PHP datorită tehnologie fulgerător descărcări. O altă caracteristică grozavă a lui Yii este Integrarea jQuery.

Integrarea permite dezvoltatori terți implementați rapid infrastructura în proiectele dvs. Similar cu Symfony,Yii folosește și componente pentru dezvoltarea rapidă a aplicațiilor. Este necesar să menționăm faptul că codul generat de acest framework Yii se poate umfla din cauza manipulării necorespunzătoare. Această structură nu este potrivită pentru începători. Pentru dezvoltatorii juniori, acest sistem de codare este considerat relativ complex în comparație cu alte cadre de pe piață. Există multe probleme asociate cu metodele statice.

În ciuda acestor deficiențe, cadrul Yii este Un instrument incredibil de puternic pentru dezvoltarea aplicațiilor web într-o perioadă scurtă de timp. Conform statisticilor BuiltWith, peste 90 de țări folosesc această tehnologie la dezvoltarea unei aplicații Web2.0. Acest cadru este considerat un concurent puternic pe piață datorită caracteristicilor sale uimitoare.

Zend

Zend Framework a fost construit strict pe PHP 5, care este practic structura orientata pe obiecte. Este simplu și are o arhitectură flexibilă care vă permite să utilizați diverse componente Zend pentru a îmbunătăți funcționalitatea aplicației dvs. Zend este un alt cadru PHP uimitor care este extrem de inovator, sigur și flexibil. De-a lungul anilor, Zend Framework a fost implicat în proiecte mari ale întreprinderilor.

Aură

Acest alegerea perfecta pentru cei care au nevoie de un cadru care să ofere biblioteci independente de cea mai înaltă calitate, complet testate, care pot fi utilizate inteligent în orice cadru de codare. Fiecare tip de bibliotecă este închis și nu depinde de niciun pachet suplimentar.

Acest lucru este important în special pentru cei care preferă codare curată, biblioteci complet decuplate și pachete cu autogestionare. De asemenea, oferă o structură trivială, testată sistematic și standard. Fulger App Builder Vă permite să glisați și să plasați componentele Lightning și să vă conectați la diferite surse de date. Nu se poate face crearea propriu-zisă prin glisare și plasare App Builder cu Aura pe cont propriu; Trebuie să fiți conectat la Salesforce pentru a face acest lucru.

Aplicații dezvoltate cu Aplicația de ajutor Builder se poate conecta la mai multe surse de date, altele decât Salesforce.

Beneficiile Aura


Falcon

Majoritatea dezvoltatorilor cred că Phalcon este structura textului integral, care este scris folosind limbajul C&C++. Aceste limbi își îmbunătățesc productivitatea. Este incredibil de inovator; de aceea este una dintre cele mai populare platforme pentru dezvoltarea de aplicații web.

Extensii pe Zephir/C sunt încărcate împreună cu PHP o dată, când domeniul serverului web este pornit. Clasele și funcțiile furnizate de extensie sunt gata pentru a fi utilizate în orice aplicație. Datorită arhitecturii și optimizării sale de nivel scăzut, Phalcon oferă cea mai mică suprasarcină atunci când rulează aplicații MVC.

De întreținut

Platforma PHP acceptată a fost concepută oficial pentru a găzdui proiectele personale ale creatorului său. Cu toate acestea, mai târziu un deschis sursă. La fel ca multe cadre, nu este potrivit pentru anumite tipuri de aplicații. Este conceput în primul rând pentru a lucra cu aplicații de dimensiuni mici și medii. Componenta Mad_Model este obiect relațional cartografiere (ORM) pentru structură.

În modelul ActiveRecord, tabelele sunt mapate la clase, rânduri, obiecte mapate și coloane cu atribute obiect. Conceptul este aproape de concept Ruby pe șine. Toate bibliotecile furnizorului, inclusiv structura suportată, se află sub vendor/. Cadrul nu își creează propriul sistem de pluginuri sau alte metode de încărcare. Bibliotecile sunt într-un director și urmează convențiile de denumire PEAR.

Bibliotecile cadru sunt sub comanda vânzător/Nebun/și, prin urmare, clasele sunt prefixate cu Mad_. Toate aplicațiile create folosind această platformă au aceeași structură de directoare. Acest lucru asigură coerența între proiecte, permițând membrilor echipei să comute cu ușurință între proiecte și să utilizeze diferite instrumente.

Fara grasimi

În prezent, este una dintre cele mai simplificate, ușoare și una dintre cele mai bune infrastructuri PHP. Cântărește mai puțin de 50 KB și este considerat unul dintre cele mai ușoare cadre PHP. Caracteristici cheie ale cadrului (rutare URL, suport pentru aplicații multilingve și mecanism de cache)

au fost folosite pentru a crea o infrastructură puternică. Cadrul include multe plugin-uri, o bibliotecă puternică de coadă, un ORM uimitor, rutare fără durere și autentificare simplă. Trebuie menționat că această structură a fost creat folosind componente Symfony.

Beneficiile fără grăsimi


Să comparăm cele mai populare cadre pe un singur grafic.

Știați că 40% dintre utilizatori părăsesc site-uri web cu design slab? De ce pierde profit? Alegeți și instalați unul dintre ele chiar acum 44 de mii de șabloane premium pentru site-uri web. Alegerea ideala pentru afacerea ta!

Dintre toate limbile programarea serverului Cadrul PHP este, fără îndoială, cel mai potrivit pentru învățare. Este aproape întotdeauna instalat chiar și pe cea mai ieftină găzduire web. De asemenea, este ușor de instalat pe orice mașină de lucru. Începătorii cu o anumită experiență în dezvoltarea paginilor web folosind HTML și CSS vor putea să stăpânească cu ușurință conceptele de bază: variabile, condiționale inline și declarații includ. PHP oferă, de asemenea, multe funcții utilizate în mod obișnuit, care sunt utile pentru dezvoltarea site-urilor web dinamice.

Totul sugerează că limbaj PHP poate fi invatat rapid fara probleme. Cu toate acestea, acest avantaj are și dezavantajele sale. Începătorii pot închide ochii la multe nuanțe și pot face greșeli în cod, deoarece vor învăța totul destul de repede și vor fi prea încrezători în cunoștințele lor. Cel mai adesea, pe măsură ce funcționalitatea este adăugată site-ului, codul de ieșire va deveni din ce în ce mai complex. Acest lucru se datorează faptului că PHP nu are un mecanism din cutie care să ajute la rezolvarea separată a problemelor.

Să ne uităm acum la cadrul PHP, sau mai degrabă la cele mai bune 5 dintre ele, care vă vor ajuta să faceți față multor probleme atunci când lucrați. Le vom prezenta pe scurt pe cele care merită explorate în 2017 și vă vom spune exact cum pot face dezvoltarea aplicației mai ușoară. Merge!

  1. Laravel

Cadrul PHP există de ceva timp. Unul dintre cei mai noi, începători, este Laravel. După lansarea versiunii 3, popularitatea sa a crescut dramatic, iar astăzi este unul dintre cele mai faimoase și răspândite cadre. Depozitul GitHub al Laravel se clasează mai sus decât omologii săi mai maturi, cum ar fi Symfony, CakePHP, CodeIgniter și Yii. Despre ele vom vorbi mai târziu.

Laravel refolosește și asamblează componentele existente, oferindu-vă un strat de lipici deasupra căruia vă puteți construi aplicațiile web într-un mod mai structurat și mai practic. Luând tot ce este mai bun din cadrele populare (nu doar PHP, ci și alte limbi), Laravel oferă un set complet de instrumente și arhitectură de aplicații care combină multe dintre Cele mai bune caracteristici cadre precum CodeIgniter, Yii, ASP.NET MVC, Sinatra, Ruby on Rails și așa mai departe.

Mai jos este un grafic care demonstrează clar creșterea în popularitate a lui Laravel (sursa: Google Trends). Valoarea maximă (100) indică popularitatea maximă a tehnologiei. O valoare de 50 indică faptul că tehnologia a devenit cu 50% mai puțin populară, iar valoarea 0 indică faptul că tehnologia a scăzut în popularitate la 1%. Toate acestea sunt relevante și pentru graficele de popularitate ale altor cadre.

Creșterea popularității lui Laravel
(sursa – Google Trends)

Majoritatea cadrelor PHP folosesc paradigma de separare MVC (Model-View-Controller). Dacă ați lucrat vreodată cu unul dintre instrumentele menționate mai sus sau sunteți familiarizat cu MVC, învățarea Laravel 5 (cea mai recentă versiune a cadrului) nu va fi dificilă.

  1. CodeIgniter

La fel ca Laravel, CodeIgniter se bazează pe modelul MVC. Aceasta este o abordare a dezvoltării software care separă logica aplicației de prezentare. În practică, acest lucru vă permite să minimizați numărul de scripturi de pe pagină, deoarece prezentarea este separată de execuția scripturilor PHP.

CodeIgniter este un cadru PHP minunat, simplu, conceput pentru programatori care au nevoie de un set simplu și accesibil de instrumente pentru a crea aplicații web cu Set complet funcții.

Creșterea popularității CodeIgniter
(sursa – Google Trends)

CodeIgniter vine cu un motor de șablon simplu bazat pe principiul înlocuirii. Suplimentele și pluginurile sunt disponibile pentru majoritatea motoarelor de procesare a șabloanelor cu funcții complete. De asemenea, puteți utiliza propriile standarde de codare și convenții de denumire, care au doar câteva avertismente în ceea ce privește conflictele de nume de clasă. CodeIgniter este conceput pentru a vă elibera, nu pentru a vă limita.

  1. Symfony

În timp ce multe alte cadre urmează doar regulile MVC, Symfony este un cadru care are MVC la bază. Acesta este poate unul dintre motivele pentru care cadrul Laravel și sistemul de management al conținutului (CMS) precum Phpbb au adoptat multe componente de la Symfony și au început să-i calce pe urme.

Standardele Symfony facilitează gestionarea erorilor și scrierea codului de înaltă calitate. În fiecare an comunitatea lui crește. Symfony este un cadru PHP avansat bazat pe componente. Vă va permite să creați site-uri web și aplicații web de înaltă calitate.

Popularitate în creștere a Symfony
(sursa – Google Trends)

Symfony 3 este un set de componente izolate și reutilizabile care au alimentat odată aplicații PHP premium, cum ar fi Drupal și phpBB.

Cadru PHP – vorbim despre cele mai bune dintre ele în 2017

  1. Yii 2

Yii este un cadru de programare web generalizat. Aceasta înseamnă că este ușor potrivit pentru programarea PHP pentru diferite tipuri de aplicații web. Arhitectura sa bazată pe componente și suportul avansat de cache îl fac deosebit de potrivit pentru construirea de aplicații la scară largă. De exemplu, veți putea crea portaluri, forumuri, magazine online, sisteme de management al conținutului (CMS), servicii web RESTful și așa mai departe.

Yii folosește modelul arhitectural MVC, astfel încât codul este organizat pe baza acestei abordări.

Ascensiunea lui Yii
(sursa – Google Trends)

Yii 2 este un cadru PHP cuprinzător care oferă un număr mare de caracteristici de încredere și ieșite din cutie. Acestea includ generatori de interogări și șablonul ActiveRecord pentru diferite baze de date (în special relaționale și NoSQL), suport pentru dezvoltarea de API-uri web RESTful, suport pentru stocarea în cache pe mai multe niveluri și așa mai departe.

  1. Nette

Framework-ul Nette este un alt jucător de încredere pe piața framework-urilor PHP pentru dezvoltarea de aplicații web, ceea ce merită cele mai mari laude. Vine cu funcții puternice și ușurează viața dezvoltatorilor web. Folosește tehnologii avansate pentru a aborda vulnerabilitățile de securitate și pentru a combate diferite tipuri de atacuri, cum ar fi scripturi între site-uri, falsificarea cererilor între site-uri, deturnarea sesiunii și deturnarea sesiunii.

Nette este un cadru PHP modern care acceptă tehnologii precum AJAX/AJAJ, dependency injection, KISS, MVC, SEO, URL cool și Web 2.0.

Popularitate în creștere a lui Nette
(sursa – Google Trends)


Atunci când dezvoltă orice produs software, echipa de dezvoltare se confruntă în primul rând cu sarcina de a alege cu competență o platformă software care determină structura sistemului software.

Pentru a face acest lucru, trebuie să țineți cont de un număr destul de mare de caracteristici, de la „cât de repede va funcționa totul” la „avem nevoie de această caracteristică?” Și așa de fiecare dată. Este în momente brainstorming echipa compară confortul cadrului, viteza și setul de caracteristici care sunt implementate în acesta sau în module compatibile cu acesta.

Dar care dintre ele este mai bun, mai rapid și mai productiv?

Dezvoltatorii compară în mod constant cadrele pentru a clarifica această problemă. De exemplu, articolul lui Lukasz Kujawa oferă o comparație a cadrelor PHP. Un „dar” - articolul este din 2013. Dar timpul trece... Prin urmare, am decis să facem propria noastră comparație actualizată a cadrelor.

PHP Framework Benchmark a fost folosit pentru a evalua performanța. El oferă multe cadre de comparație (nu doar cele menționate mai sus), dar autorul nu se grăbește să adauge versiuni noi ale proiectelor în depozit, ceea ce, desigur, este trist, deși nu fatal. Nu este dificil să adăugați o nouă versiune dacă doriți.

Unul dintre obiectivele principale ale acestui articol este și acela de a încerca într-un mod practic identificați îmbunătățiri ale performanței și eficienței noilor versiuni de PHP. Prin urmare, testarea a fost efectuată pe PHP 5.6/7.0/7.1

Cu ce ​​vom compara?

Următoarele cadre au fost alese pentru comparație:
  • subțire-3.0
  • ci-3.0
  • lumen-5,1
  • yii-2,0
  • silex-1.3
  • combustibil-1.8
  • phpixie-3.2
  • zf-2,5
  • zf-3.0
  • symfony-2.7
  • symfony-3.0
  • laravel-5.3
  • laravel-5.4
  • bluz (versiunea 7.0.0 - pentru PHP5.6 și versiunea 7.4 pentru PHP7.0 și o versiune ulterioară)
  • ze-1.0
  • falcon-3.0
Testarea este împărțită în 4 tipuri:
  • performanță (debit),
  • memorie ocupată (memorie),
  • timpul de execuție (timp de execuție),
  • numărul de fișiere incluse.

Metodologia de testare și bancul de testare

Mașina folosită pentru testare are următoarele caracteristici:

Sistem de operare: Linux Mint 17 Cinnamon pe 64 de biți
Cinnamin versiunea 2.2.16
Kernel Linux: 3.13.0-24-generic
Procesor: Intel core CPU i3-4160 3,60 Ghz X 2
Memorie: 8 GB

Versiunea serverului: Apache/2.4.7 (ubuntu)
Construire server: 15 iulie 2016
php 7.1 / php7.0 / php5.6

Introducem comanda git clone https://github.com/kenjis/php-framework-benchmark - iar cadrul este deja pe mașina noastră. Deoarece am folosit Mint, trebuie să facem niște setări:

# Addednet.netfilter.nf_conntrack_max = 100000net.nf_conntrack_max = 100000net.ipv4.tcp_max_tw_buckets = 180000net.ipv4.tcp_tw_recycle = 1net.ipv4 = 1net.ipv4.tcp_max_tw_buckets = 1net.ipv4.tcp_tw_tw. 0

Sudo sysctl -p

Câteva despre structura php-framework-benchmark în sine:

/benchmarks- conține scripturi bash responsabile de colectarea informațiilor despre numărul de solicitări pe secundă (folosind utilitarul ab), cantitatea de informații, cât timp a fost petrecut și câte fișiere au fost apelate din fișierul „punctul de pornire”.

/lib- un director care conține fișiere responsabile cu procesarea informațiilor primite după afișarea paginii „Bună lume”, afișarea tabelelor cu rezultate și construirea diagramelor.

/ieșire- directorul în care se adaugă jurnalele după testare. Există două fișiere aici pentru fiecare fișier testat: .ab.log - jurnalul după rularea utilitarului ab și .output - conține informații care au fost afișate pe ecran (de obicei, salut lumea și date despre memorie, timpul de execuție și fișierele utilizate ).

Dosarele rămase sunt șabloane de cadru, la care a fost deja adăugat un controler, care va returna șirul „hello world” atunci când este accesat de un URI compilat conform regulilor de accesare a acestui cadru.

Pentru a rula un test, mai întâi trebuie să configurați cadrele. Să luăm în considerare două abordări.

Comanda bash setup.sh va configura acele cadre care sunt descrise în fișierul list.sh. Îl puteți edita: adăugați și eliminați foldere pentru testare. Adică configurați-l după cum aveți nevoie.

comanda bash setup.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/ puteți instala unele cadre individuale specificându-le ca parametri la comandă. În unele cazuri, acest lucru este convenabil, dar am folosit prima abordare.

După configurarea cadrelor, am început să testăm folosind bash benchmark.sh.

La sfârșitul lucrării, în terminal a apărut un tabel cu o listă de cadre testate, numărul de solicitări pe secundă, valoarea relativă a memoriei ocupate, precum și valorile relative ale acestor indicatori.

Pentru a afișa graficele, am folosit linkul http://localhost/php-framework-benchmark/.

După cum înțelegeți, a fost necesar să configurați Apache și să îl forțați să se uite la folderul cu cadrul. Toate acestea sunt descrise în readme, așa că nu apar întrebări.

Rezultatele testării cadru

Fiecare secțiune are o structură formată din două forme de prezentare a rezultatelor.

Prima formă este un tip vizual de prezentare. Fiecare caracteristică conține 4 diagrame. Fiecare diagramă arată o comparație între cadre, plus o diagramă cumulativă. A fost construit folosind o versiune specifică de PHP. În acest fel, puteți urmări evoluția îmbunătățirilor în PHP și cadre.

A doua formă este rezultatul testului sub formă de tabel (suficientă vizualizare, să fim serioși - dați-mi mai multe numere!).

Performanță (debit)

În raport cu situația noastră, caracteristica de debit este măsurată în numărul de solicitări pe care cadrul nostru le poate procesa într-o secundă. Prin urmare, cu cât acest număr este mai mare, cu atât aplicația noastră va fi mai performantă, deoarece va putea gestiona corect solicitările de la un număr mare de utilizatori.

Am obținut următoarele rezultate (cereri pe secundă):

php 5.6 php 7.0 php 7.1
falcon-3.1.2 5058.00 5130.00 7535.00
ci-3.0 2943.55 4116.31 4998.05
subțire-3.0 2074.59 3143.94 3681.00
yii-2,0 1256.31 2276.37 2664.61
silex-1.3 1401.92 2263.90 2576.22
lumen-5,1 1316.46 2384.24 2741.81
ze-1.0 1181.14 1989.99 1741.81
phpixie-3.2 898.63 1677.15 1896.23
combustibil-1.8 1044.77 1646.67 1770.13
bluz-7.3.1 - * 1774.00 1890.00
zf-2,5 198.66 623.71 739.12
zf-3.0 447.88 1012.57 1197.26
symfony-2.7 360.03 873.40 989.57
symfony-3.0 372.19 853.51 1022.28
laravel-5.3 258.62 346.25 625.99
laravel-5.4 219.82 413.49 600.42

Pentru claritate, am construit grafice pentru fiecare versiune de PHP:

PHP5.6:

PHP7.0:

PHP7.1:



Memoria de vârf

Această caracteristică (în megaocteți) este responsabilă pentru cantitatea de memorie ocupată de cadru la îndeplinirea sarcinii care i-a fost atribuită. Mai putin număr dat, cu atât mai bine pentru noi și pentru server:
php 5.6 php 7.0 php 7.1
falcon-3.1.2 0.27 0.38 0.37
ci-3.0 0.42 0.38 0.38
subțire-3.0 0.61 0.55 0.55
yii-2,0 1.31 0.91 0.91
silex-1.3 0.74 0.65 0.65
lumen-5,1 0.80 0.63 0.63
ze-1.0 0.79 0.56 0.56
phpixie-3.2 1.22 0.82 0.82
combustibil-1.8 0.7 0.6 0.6
bluz-7.3.1 - * 0.69 0.69
zf-2,5 3.06 1.34 1.34
zf-3.0 2.12 1.09 1.08
symfony-2.7 3.11 1.41 1.42
symfony-3.0 2.86 1.30 1.32
laravel-5.3 2.91 2.04 2.04
laravel-5.4 3.04 1.45 1.49

* - bluz-7.3.1 nu acceptă php 5.6

PHP 5.6:

PHP 7.0:

PHP 7.1:

Rezumat grafic cumulativ (pe cadru):

perioada de graţie

Timpul de execuție este timpul necesar sistemului pentru a finaliza o anumită sarcină. Se măsoară de la începutul sarcinii până la rezultatul de către sistem.

Ne-am uitat la câte solicitări pe secundă poate procesa cadrul și câtă memorie ocupă. Acum să ne uităm la cât timp trebuie să așteptăm pentru a primi un răspuns de la server. Cu cât această valoare este mai mică, cu atât mai bine pentru noi , și pentru sistemul nervos al clientului aplicației noastre.

Timpul este dat în milisecunde (ms):

php 5.6 php 7.0 php 7.1
falcon-3.1.2 1.300 1.470 1.080
ci-3.0 0.996 0.818 1.007
subțire-3.0 1.530 1.228 0.662
yii-2,0 1.478 1.410 1.639
silex-1.3 4.657 1.625 2.681
lumen-5,1 2.121 1.829 1.228
ze-1.0 2.629 2.069 1.528
phpixie-3.2 9.329 4.757 1.911
combustibil-1.8 3.283 2.684 1.425
bluz-7.3.1 - * 1.619 1.921
zf-2,5 22.042 5.011 3.998
zf-3.0 12.680 2.506 2.989
symfony-2.7 6.529 3.902 2.384
symfony-3.0 9.335 3.987 2.820
laravel-5.3 19.885 4.840 2.622
laravel-5.4 19.561 4.758 3.940

PHP 5.6:

PHP 7.0:

PHP 7.1:

Rezumat grafic cumulativ (pe cadru):

Fișiere incluse

O caracteristică responsabilă pentru numărul de fișiere incluse care sunt descrise în fișierul „punctul de intrare” al cadrului. Este clar că sistemul petrece ceva timp căutând și conectându-se. Prin urmare, Cum mai puține fișiere, mai rapid Aplicația va fi lansată pentru prima dată, deoarece de obicei, în perioadele ulterioare, cadrul funcționează cu memoria cache, ceea ce accelerează lucrul:
falcon-3.1.2 5
ci-3.0 26
subțire-3.0 53
yii-2,0 46
silex-1.3 63
lumen-5,1 37
ze-1.0 68
phpixie-3.2 163
combustibil-1.8 53
bluz-7.3.1 95
zf-2,5 222
zf-3.0 188
symfony-2.7 110
symfony-3.0 192
laravel-5.3 38
laravel-5.4 176


Diferența dintre numărul de fișiere incluse între Laravel 5.3 și Laravel 5.4 poate părea ciudată și poate da naștere la discuții, dispute etc. Ne grăbim să clarificăm situația. După cum știți, folosind comanda

Php artizan optimizare --force

În Laravel 5.3, puteți genera un fișier compiled.php și, prin urmare, puteți reduce numărul de fișiere incluse prin colectarea lor într-unul singur. Dar există un „dar”: comanda pentru a genera acest fișier în Laravel 5.4 nu mai este disponibilă. Dezvoltatorul a decis să elimine această caracteristică deoarece a considerat (https://github.com/laravel/framework/pull/17003) că este mai bine să folosească opcache pentru a regla performanța.

Merită să faceți upgrade?

Datele rezumate după versiune arată mai mult decât clar ce creștere a productivității și a eficienței resurselor va avea loc atunci când treceți (sau alegeți inițial) la o nouă versiune de PHP.

La trecerea de la PHP 5.6 la PHP 7.0, creșterea medie a performanței a fost de aproape +90%, cu o creștere minimă a performanței de +33% pentru Laravel 5.3 și un maxim de >200% pentru Zend Framework 2.5.

Trecerea de la versiunea 7.0 la 7.1 nu mai este atât de șocantă, dar totuși dă în medie o creștere de aproape 20% a performanței.

Rezumând toate datele de performanță obținute versiuni diferite PHP, obținem aceste „saltele”:


Fapt amuzant: Laravel 5.3 a arătat cel mai mic câștig de performanță la migrarea de la PHP 5.6 la PHP 7.0, dar cea mai mare creștere la migrarea de la versiunea 7.0 la versiunea 7.1 și, ca urmare, performanța Laravel 5.3 și 5.4 pe PHP 7.1 este aproape aceeași.

Consumul de memorie a fost de asemenea optimizat, astfel încât trecerea de la PHP 5.6 la PHP 7.0 va permite aplicației dumneavoastră să consume cu 30% mai puțină memorie.

Actualizarea de la versiunea 7.0 la versiunea 7.1 nu dă practic nicio creștere, iar în cele mai recente Symfony și Laravel suntem complet pe roșu, pentru că încep să „mănânce” puțin mai mult.


Tot ce rămâne este să ne uităm la timpul de execuție și da, totul este bine și aici:

  • Trecerea de la PHP 5.6 la PHP 7.0 vă va oferi o accelerare medie de 44%.
  • Trecerea de la PHP 7.0 la PHP 7.1 vă va oferi încă o accelerare de 14%.

Notă. Testarea cu ab - ce am întâlnit


„Ce zici de slim și phpixie” - această întrebare a determinat o investigație asupra comportamentului utilitarului ab atunci când interacționează cu aceste cadre.

Să rulăm testul separat pentru Slim-3.0:

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Nivel de concurență: 10
Timp necesar pentru teste: 5.005 secunde
Cererile complete: 2
Solicitări nereușite: 0
Total transferat: 1800 de octeți
HTML transferat: 330 de octeți
Solicitări pe secundă: 0,40 [#/sec] (medie)
Timp per cerere: 25024.485 (medie)
Timp per solicitare: 2502.448 (medie, pentru toate solicitările concurente)
Rata de transfer: 0,35 primit

Ceva nu este în regulă - numărul de solicitări pe secundă este de numai 0,4 (!)

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/laravel-5.4/public/index.php/hello/index

Nivel de concurență: 10
Timp necesar pentru teste: 3.004 secunde
Cereri complete: 1961
Solicitări nereușite: 0
Total transferat: 1995682 octeți
HTML transferat: 66708 octeți
Solicitări pe secundă: 652,86 [#/sec] (medie)
Timp per cerere: 15.317 (medie)
Timp per solicitare: 1.532 (medie, pentru toate solicitările concurente)
Rata de transfer: 648,83 primite

Problema a fost o conexiune Keep Alive, puteți afla mai multe aici.

„Când faceți cereri cu „Conexiune: păstrați-vă”, cererea ulterioară către server va folosi aceeași conexiune TCP. Aceasta se numește conexiune HTTP persistentă. Acest lucru ajută la reducerea încărcării CPU pe partea serverului și îmbunătățește latența/timpul de răspuns.

Dacă se face o solicitare cu „Conexiune: închide”, aceasta indică faptul că odată ce solicitarea a fost făcută, serverul trebuie să închidă conexiunea. Și astfel pentru fiecare cerere se va stabili o nouă conexiune TCP.

În mod implicit, clientul/serverul HTTP 1.1 utilizează menținerea în viață, în timp ce clientul/serverul HTTP 1.0 nu acceptă menținerea în viață în mod implicit.”


Deci testul pentru Slim ar trebui să arate astfel:

Ab -H „Conexiune: închidere” -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Nivel de concurență: 10
Timp necesar pentru teste: 3.000 de secunde
Cereri complete: 10709
Solicitări nereușite: 0
Total transferat: 2131091 octeți
HTML transferat: 353397 octeți
Solicitări pe secundă: 3569,53 [#/sec] (medie)
Timp per cerere: 2.801 (medie)
Timp per solicitare: 0,280 (medie, pentru toate solicitările concurente)
Rata de transfer: 693,69 primite

Concluzie

După cum v-ați putea aștepta, liderul incontestabil în performanță (dar nu în viteza de dezvoltare) este Phalcon. Locul al doilea - și de fapt primul dintre cadrele PHP (nu C, în care este scris codul sursă Phalcon) - este CodeIgniter 3!

Desigur, nu trebuie să uităm că fiecare instrument are propriul său scop. Dacă alegeți un cadru mic și ușor și veți scrie pe el altceva decât aplicații simple sau API-uri REST, atunci cel mai probabil veți întâmpina probleme la extinderea funcționalității. Și invers - redundanța cadrelor mari cu funcții complete va implica costuri financiare pentru menținerea găzduirii chiar și pentru aplicații elementare sub sarcină grea.

Această testare a fost făcută pentru a convinge/a spune/întări poziția versiunilor de limbaj PHP 7.0 și 7.1 în mintea ta și în proiectele viitoare, pentru a transmite mesajul că productivitatea a crescut într-adevăr.

Refactorizarea structurilor interne de date și adăugarea etapă suplimentarăînainte de a compila codul ca arbore de sintaxă abstractă (AST), a avut ca rezultat performanță superioară și o alocare mai eficientă a memoriei. Rezultatele în sine par promițătoare: teste efectuate pe aplicații reale, arată că PHP 7 este, în medie, de două ori mai rapid decât PHP 5.6 și, de asemenea, utilizează cu 50% mai puțină memorie în timpul procesării interogărilor, făcând PHP 7 un competitor puternic pentru compilatorul HHVM JIT de la Facebook.

Testele confirmă complet atât procesarea cererilor de două ori accelerată în PHP7, cât și cantitatea redusă de memorie utilizată.

1. În ultimii ani, numărul cadrelor din lumea dezvoltării web a crescut dramatic, iar în spatele fiecăruia dintre ele se află un număr mare de oameni care convin că este cel mai bun instrumentîn zona ta. Cum să alegi cadrul sau setul de cadre potrivit și adecvat pentru un proiect?

Alexandru Makarciuk, qb
Fiecare cadru are o cantitate mare suporteri și adversari. Există mai mulți factori de care trebuie să luați în considerare atunci când alegeți un cadru. În primul rând, cadrul ar trebui să aibă exact atâtea caracteristici cât are nevoie proiectul. Nu este necesară funcționalitatea excesivă, dar nu ar trebui să existe niciodată restricții la finalizarea proiectului. În al doilea rând, timpul de dezvoltare a site-ului nu ar trebui să crească din cauza alegerii unui cadru sau altuia. În al treilea rând, cadrul trebuie să fie suficient de răspândit, astfel încât proiectul să poată fi transferat unui alt dezvoltator. În cele din urmă, securitatea cadrului este unul dintre cei mai importanți indicatori. Toate cadrele sunt bune dacă sunt în mâinile potrivite.

Alexey Zuban Wow
Pe de o parte a scalei se află timpul economisit datorită soluțiilor oferite de cadru. Pe de altă parte, este timpul petrecut învățând o nouă platformă. Trebuie să alegeți o tehnologie care vă permite să vă rezolvați problema în cel mai scurt timp posibil. Luând în considerare riscurile pe care o nouă tehnologie le aduce cu ea: erori interne, suport și documentație slabă de la dezvoltator, soluții nedezvoltate pentru sarcinile dvs.

Alexandru Makarov Yii
Trebuie să analizați problema, să înțelegeți ce este necesar din cadru, să selectați primele 5 potrivite, să scrieți o mică aplicație pe ele și să o lăsați pe cea care s-a dovedit a fi mai bună decât restul.

,ADV
Este necesar să se evalueze gradul de conformitate a funcționalității out-of-the-box cu cerințele proiectului, precum și orizontul de aplicare al acestei soluții (cât de curând se va încheia funcționalitatea finalizată). În acest caz, este necesar să se evalueze expertiza echipei și disponibilitatea specialiștilor de pe piață care lucrează cu acest cadru. Cu siguranță trebuie să acordați atenție dacă soluția acceptă compatibilitatea cu versiunea anterioară; dacă creatorii cadrului schimbă toate API-urile de la o versiune la alta, atunci cu siguranță nu ar trebui să o utilizați.

Alexandru Smirnov, Greensight
Nu este dificil să alegeți dintr-un set binecunoscut de cadre, deoarece în timpul proiectării necesitatea anumitor tehnologii este imediat vizibilă. Urmează problema creșterii numărului de cadre binecunoscute, dar aici fiecare este potrivit în felul său. Mi se pare că merită să studiem mai întâi cadrele care acoperă tehnologii diferite și sunt cele mai diferite unele de altele. De exemplu, un cadru MVC clasic și ceva cu o abordare diferită.

Alexei Fedorov, "Colegi de clasa"
Ca și în cazul oricăror instrumente, răspunsul depinde în mare măsură de momentul în care se desfășoară proiectul. Dacă proiectul este scurt, luați fie ceva cu care puteți începe rapid (de exemplu, Bootstrap), fie ceva pe care doriți să învățați și cu ce doriți să „sapă mai adânc”. Dacă proiectul este lung, este mai bine să colectați biblioteca proprie componente.

2. Cadrele conțin o cantitate mare de funcționalități gata făcute și accelerează semnificativ dezvoltarea proiectelor. În esență, managerii de proiect tehnici se confruntă cu întrebarea nu ce limbi să aleagă, ci ce cadre. Va continua această tendință? Care sunt riscurile din spatele acestui lucru?

Alexandru Makarciuk, qb
Adesea, funcționalitatea gata încorporată vă permite să asamblați o „cutie” destul de bună. Dacă există vreo abatere, trebuie fie să „târâiți” sau să „văzuți” funcționalitatea. Tendința va crește, deoarece timpul de dezvoltare este un indicator foarte important. Dar acest lucru va duce la apariția tot mai multe site-uri „strâmbe” pe Internet.

Singurul avantaj al funcționalității gata făcute este că adesea ajută la evitarea programării de rutină.

Alexandru Makarov Yii
Da, va continua. Riscurile sunt în principal în angajarea de angajați care se specializează într-un singur cadru. De îndată ce sarcinile depășesc domeniul de aplicare al cadrului sau apare necesitatea de a utiliza un alt cadru, un astfel de angajat poate avea rezultate slabe.

Alexey Persianov, Mihail Parfenyuk,ADV
Dacă segmentarea soluțiilor tehnice se adâncește, atunci așa să fie. Dar în acest moment, majoritatea cadrelor suportă funcționalități similare, iar segmentarea nu este prea mare. Există soluții specifice doar pentru cele mai comune tipuri de probleme.

Alexandru Smirnov, Greensight
Da, alegerea soluției tehnologice depinde direct de nevoile proiectului, de instrumentele studiate de managerul tehnic și de capacitatea acestuia de a compara unele cu altele. Alegerea unei limbi este mai mult o chestiune de resurse: cât de ușor este să găsești un dezvoltator pentru echipă dacă este nevoie să o extinzi etc.

Alexei Fedorov, "Colegi de clasa"
Limbile și cadrele, în special în etapele ulterioare de dezvoltare, sunt lucruri ortogonale. În ecosistemele mature, cadrele tind să aibă API-uri pentru lucrul cu mai multe limbi și invers: limbile cu ecosisteme mari au multe cadre gata de utilizare.

ÎN conditii moderne Când începeți un proiect de la zero, alegerea unui cadru este adesea pe primul loc, chiar înainte de a alege o limbă. Dacă obțineți un proiect moștenit, atunci, de regulă, nu aveți prea multe de ales și „moșteniți” limba.

Microservicii, una dintre principalele tendințe arhitecturale de astăzi, încearcă să rezolve și această problemă - să „elibereze” dezvoltatorii de utilizarea unui limbaj sau cadru specific, astfel încât fiecare parte a proiectului să fie dezvoltată folosind tehnologiile cele mai potrivite pentru acesta.

3. Ce factori garantează fiabilitatea și stabilitatea cadrului? Ce vă va permite să utilizați instrumentul în siguranță în producție?

Alexandru Makarciuk, qb
O garanție a fiabilității cadrului este toleranța la erori. Dezvoltare adecvată, optimizarea interogărilor, memorarea în cache bună - aceasta este cheia succesului. Testarea de încărcare vă va spune dacă site-ul poate fi lansat în producție.

Alexandru Makarov Yii
Prezența versiunilor stabile, un număr mare de utilizatori, prezența testelor automate, prezența activității, sursa deschisa.

Alexey Persianov, Mihail Parfenyuk,ADV
Suport cadru, compatibilitatea acestuia cu versiunile anterioare și comunitatea.

Alexandru Smirnov, Greensight
Indicatorii aproximativi, dar de obicei funcționali ai stabilității și calității unui cadru sunt dimensiunea comunității de dezvoltatori, vârsta cadrului, numărul de cazuri de succes similare sarcinii, frecvența modificărilor și numărul de stele (aprecieri). în depozitul cadru. Desigur, aceasta este o estimare aproximativă, dar puteți începe cu ea și vă aprofundați în recenzii, mărturii etc.

Alexei Fedorov, "Colegi de clasa"
În primul rând, este open source, adică open source. Aceasta este o garanție că, dacă ceva se întrerupe în producție, îl puteți repara singur. În al doilea rând, vânzătorul. Vânzătorul limbajului sau cadrului vă poate oferi anumite garanții, adesea susținute de un contract. În al treilea rând, compatibilitatea inversă. În practică, acest lucru are ca rezultat utilizarea versiuni corecte limbi și biblioteci. Nu ar trebui să aduceți versiunea 0.7 a bibliotecii în producția dvs.: de regulă, dacă un limbaj sau un cadru are o versiune mai mică decât 1.0, atunci nu există garanții de compatibilitate cu versiunea anterioară.

4. Care este direcția de dezvoltare a cadrelor, cum se vor schimba acestea în viitor?

Alexandru Makarciuk, qb
Oricât de trist este, în opinia mea, cadrele se vor deplasa pe calea „facilitarii” dezvoltării. Soluții standard, module gata făcute etc. - toate pentru ca o persoană neinstruită să poată implementa un site web.

Alexey Zuban Wow
Pentru multe platforme populare, perioada de creștere a funcționalității a trecut. Acum dezvoltarea se concentrează pe creșterea performanței. Acest lucru este valabil atât pentru cadrele frontend, cât și pentru backend. O soluție privată poate fi împărțirea cadrului în module logice. Pentru un proiect, trebuie asamblat un set de biblioteci care să rezolve doar sarcinile necesare. De asemenea, mă aștept la soluții care să conecteze mai strâns părțile client și server, cadre cu o singură sintaxă și logică pentru lucrul cu conținutul.

Alexey Persianov, Mihail Parfenyuk,ADV
Nu văd o tendință clară în afară de aceea că nișele funcționale la cerere sunt umplute cu soluții. Din păcate, foarte încet.

Alexandru Smirnov, Greensight
Fiecare cadru se dezvoltă în felul său, dar principalele schimbări se referă la închiderea acestuia puncte slabeși simplificarea procesului de dezvoltare și suport.

Alexei Fedorov, "Colegi de clasa"
Simplificarea sau, mai strict vorbind, comercializarea. Framework-urile devin din ce în ce mai complexe și mai sofisticate în interior, dar totul devine din ce în ce mai ușor pentru utilizator. Această simplificare este o modalitate excelentă pentru autori de a reduce bariera de intrare în dezvoltarea lor pentru a captiva cât mai mulți utilizatori cu limba sau cadrul lor.

5. Ce alte cadre pot apărea? Ce zone nu sunt încă închise și așteaptă apariția lor? instrument convenabil?

Alexandru Makarov Yii
Absolut orice. Întotdeauna poți face mai bine.

Alexey Persianov, Mihail Parfenyuk,ADV
Nu vreau să „sugerez” dezvoltatorilor de software gata făcut. Există o mulțime de astfel de zone, dar capacitatea lor trebuie evaluată. Evident, nișele încăpătoare sunt deja călcate în picioare, iar restul nu au atras încă potențiali furnizori.

Alexandru Smirnov, Greensight
Dezvoltarea cadrelor depinde de nevoile pieței și de capacitățile browserelor și dispozitivelor utilizatorului. Dezvoltarea cadrelor depinde direct de dezvoltarea și apariția de noi platforme: Canvas, WebGL, Node.js - de îndată ce au apărut aceste tehnologii, au apărut în curând cadrele pentru lucrul cu ele. De îndată ce apare tehnologie nouă, dobândește imediat cadrele adecvate.

Alexei Fedorov, "Colegi de clasa"
În prezent, există o dezvoltare activă în jurul containerizării. Astfel de produse sunt încă foarte departe de a fi ideale, sunt multe probleme cu ele, atât de multe proiecte mari se dezvoltă solutii propriiîn acest domeniu să lucreze cu infrastructuri mari.

6. În zilele noastre, o gamă destul de largă de soluții și biblioteci sunt numite cadre. S-ar putea schimba acest lucru cu o terminologie mai specifică? În evaluare, am împărțit cadrele în frontend și backend. Cum altfel poți tipifica toată această multitudine de cadre?

Alexandru Makarciuk, qb
Este posibil, dar nu văd nevoia.

Alexandru Makarov Yii
Terminologia există de mult timp. Cadre API, cadre REST, cadre grabber, cadre pentru dezvoltare mobilă, grile modulare, cadre adaptive, cadre pentru layout modular. Lista poate fi nesfârșită.

Alexey Persianov, Mihail Parfenyuk,ADV
Da, cadrele sunt numite atât „monstri”, cât și biblioteci mici cu o singură funcție. În viitorul apropiat va fi o înțelegere a ceea ce sunt un cadru și o bibliotecă și va apărea o divizare clară. În ceea ce privește tastarea, în acest moment există doar două ramuri.

Alexei Fedorov, "Colegi de clasa"
Puteți scrie în mai multe moduri. Există cadre pentru comunicarea cu bazele de date, există cadre pentru conectarea componentelor, există cadre pentru lucrul cu rețeaua și pentru sute de alte sarcini. Prin urmare, nu aș vorbi despre nicio împărțire strictă.

7. Folosirea cadrelor în muncă – o modă temporară sau o necesitate? Care sunt avantajele și dezavantajele utilizării cadrelor?

Alexandru Makarciuk, qb
Cu siguranță o necesitate. A scrie de la zero ceea ce este scris în cadru și apoi a „petice găurile” înseamnă a călca pe „greblă” altcuiva.

Alexey Zuban Wow
Cadre care nu sunt tehnologii impuse extern. Cele mai multe dintre ele sunt create de o comunitate de dezvoltatori angajată colectiv. Și o rezolvă cu succes probleme reale, cu care se confruntă dezvoltatorii. Cadrele sunt bune. Este o altă problemă dacă instrumentul este utilizat incorect sau în condiții nepotrivite, dar acesta nu este un minus al tehnologiei, este o chestiune de educare a dezvoltatorilor.

Alexandru Makarov Yii
Necesitate. Acum este dificil să obții aceeași viteză și calitate fără soluții populare. Va dura ani pentru a dezvolta un analog de aceeași calitate de la zero.

Alexey Persianov, Mihail Parfenyuk,ADV
Utilizarea cadrelor este o necesitate care accelerează, standardizează și reduce costurile de dezvoltare. Avantajele și dezavantajele sunt prevalența cadrului și nevoia sa reală pentru proiect.

Alexandru Smirnov, Greensight
Utilizarea cadrelor este mai degrabă inevitabilă. Chiar dacă decideți să scrieți o aplicație mai complexă decât „Bună ziua, lume” de la zero, rezultatul va fi totuși un fel de cadru.

Alexei Fedorov, "Colegi de clasa"
Utilizarea soluțiilor gata făcute, pe de o parte, accelerează foarte mult dezvoltarea și implementarea, iar pe de altă parte, introduce codul moștenit al altcuiva în proiectul dvs. cu o grămadă de erori și limitări proprii. Framework-urile sunt stratul pe care rulează aplicația dvs. Sub acest strat se află timpul de rulare, sub acesta este sistemul de operare, iar sub acesta este hardware-ul. Și toate acestea, ține cont... soluții gata făcute. Nu văd o tendință de trecere de la procesoare gata făcute la procesoare cu design propriu sau o tendință de trecere de la sisteme de operare gata făcute la ceva scris acasă. Și nici eu nu văd o astfel de tendință pentru cadre.

8. Când, în timpul dezvoltării unui proiect web, trece un nivel dincolo de care este deja dificil și nepromițător dezvoltare ulterioară proiect să folosească un CMS și este mai bine să scrieți proiectul pe unul dintre cadre?

Alexandru Makarciuk, qb
Trebuie să alegeți o platformă în faza de proiectare și nu în orice alt punct al ciclului de viață al proiectului.

Alexey Zuban Wow
Conceptele de CMS și framework nu intră în conflict între ele. CMS este o interfață șablon pentru gestionarea aplicațiilor. CMS-ul se poate baza pe cadre. Iar decizia cu privire la necesitatea utilizării sau creării unei astfel de interfețe ar trebui să se bazeze pe funcționalitatea aplicației. Lucrurile atipice sunt mai dificil de implementat într-un cadru șablon. O flexibilitate mai mare a cadrelor poate fi utilă atunci când mai multe echipe lucrează la un proiect și/sau trebuie implementate sisteme de integrare continuă.

Alexandru Makarov Yii
Nu. Există proiecte care se încadrează în CMS. Există proiecte care nu se încadrează în CMS. Instrumentul trebuie selectat în funcție de sarcină și nu sarcina trebuie ajustată la instrument.

Alexey Persianov, Mihail Parfenyuk,ADV
Când devine clar că în planul de dezvoltare previzibil al proiectului trebuie scrise practic de la zero prea multe sarcini.

Alexandru Smirnov, Greensight
Când CMS-ului nu are flexibilitate și trebuie să îl rupeți pentru a implementa sarcina. Același lucru este valabil și pentru cadre: în timpul dezvoltării pe termen lung a unui proiect, nu există întotdeauna suficientă flexibilitate și trebuie să treceți la o altă soluție sau să rescrieți părți cheie ale acesteia.

Alexei Fedorov, "Colegi de clasa"
Când costurile de dezvoltare și suport devin prea mari.

Este 2016, ceea ce înseamnă că stilul imperativ nu mai este la modă. „Oamenii normali nu scriu așa”, va spune oricine dezvoltator modern pe proiect major si va avea dreptate.

Și dacă tot nu sunteți de acord cu el, atunci este timpul să vă actualizați cunoștințele: metodologiile moderne, precum MVC sau OOP, vă vor simplifica foarte mult viața atât pentru dvs., cât și pentru colegii dvs. Și toate aceste lucruri sunt pe deplin implementate de un alt lucru obligatoriu în 2016 - framework-urile PHP.

Să le analizăm mai detaliat și să ne dăm seama pe care ar trebui să o alegeți.

Laravel

Unul dintre cele mai populare cadre PHP cu sintaxă expresivă și elegantă. Va facilita cât mai ușor rezolvarea problemelor principale și cele mai presante, cum ar fi autentificarea, rutarea, sesiunile și stocarea în cache. Laravel a fost creat ca o încercare de a combina numai cele mai bune dintre celelalte cadre PHP, precum și Ruby on Rails, ASP.NET MVC și Sinatra. Unul dintre cele mai importante avantaje ale sale este prezența unui sistem integrat de testare unitară.

Zend

Un cadru scris în întregime într-un stil orientat pe obiecte, folosind toate cele mai recente inovații PHP. Proiectat cu dependențe minime de alte componente, fiecare dintre acestea putând fi utilizată separat; cu toate acestea, set standard bibliotecile îl fac un instrument de dezvoltare foarte puternic și ușor de extensibil.În plus, oferă o implementare MVC robustă și de înaltă performanță și o abstractizare a bazei de date ușor de utilizat, împreună cu multe alte caracteristici care se adaugă pentru a-l face unul dintre cele mai bogate în funcții framework-uri de acolo.

CakePHP

CakePHP este un cadru scris în PHP pentru crearea de aplicații web cu o comunitate activă și în creștere rapidă. La fel ca majoritatea celorlalte cadre, implementează modelul MVC. A fost creat inițial ca o clonă a popularului Ruby on Rails și multe dintre ideile sale au fost împrumutate de acolo. Se deosebește de concurenții săi prin faptul că acceptă nu numai PHP5, ci și PHP4.

Aprindetor de cod

Poate cel mai ușor cadru de învățat și utilizat. Usor de extensibil, sigur si foloseste abordari simple si clare, intr-un cuvant - ideal pentru incepatori. Unul dintre celelalte avantaje ale sale este viteza; acest cadru face față sarcinii de a lucra cu o bază de date mult mai rapid decât ceilalți frați ai săi.

Kohana

Kohana, fost Blue Flame, este un cadru web PHP5 cu sursa deschisa, care utilizează modelul arhitectural HMVC. Scopul său este să fie sigur, ușor și ușor de utilizat.

PHP Inside, o revistă pentru dezvoltatori web, a numit-o pe Kohana „alegerea editorului... pentru arhitectura, viteza și comunitatea sa”.

Kohana este o furcă a celebrului cadru Code Igniter și se concentrează pe respectarea strictă a PHP 5 OOP și un model de dezvoltare transparent.

Symfony

Un cadru format din multe componente și scris în PHP5 folosind modelul Model-View-Controller. Oferă dezvoltarea și gestionarea rapidă a aplicațiilor web, o face ușor de rezolvat sarcini de rutină programator web. Unul dintre principalele sale avantaje este suportul pentru mai multe baze de date (MySQL, PostgreSQL, SQLite sau orice alt DBMS compatibil cu PDO).

Yii

Un cadru PHP de înaltă performanță care utilizează modelul MVC și conceput pentru dezvoltarea rapidă a aplicațiilor web moderne. Capacitățile sale fac posibilă implementarea proiectelor la scară largă, cum ar fi forumuri, portaluri, CMS, servicii web RESTful și alte sisteme complexe într-un timp scurt. Include deja multe soluții dovedite și gata de utilizare: un generator de interogări, ActiveRecord pentru baze de date relaționale și NoSQL, API RESTful, suport pentru caching pe mai multe niveluri și multe altele.