Sari la conținutul principal

Dezvoltare web folosind Symfony

Detalii despre construcția unui ERP enterprise folosind PHP cu Symfony. Cum arată trecerea de la CodeIgniter la Symfony și baza construcției unui ERP modern, conceput din start pentru a procesa un flux imens de date.

Dezvoltare web folosind Symfony

Aplicația a fost cerută de un client care operează în Europa pentru colectarea de anvelope și alte produse adiacente din service-uri auto. Rolul meu a fost în implementarea diverselor funcționalități din aplicație.

Cum arată trecerea de la sisteme simple la Symfony

Prima impresie lucrând cu Symfony a fost interesantă. Deși este un MVC ca Laravel sau CodeIgniter, este mult mai flexibil și complex. Fiind atât de permisiv, este și foarte ușor să faci greșeli. În același timp, din cauza flexibilității, permite implementarea oricărei filozofii de design, cum ar că fi DDD (Domain-Driven Design).

Cea mai impresionantă parte pentru mine a fost ORM-ul. Până în acel moment nu lucrasem cu un ORM, iar de atunci îl folosesc zilnic.

Tot în cadrul acestui proiect am văzut cum arată dezvoltarea modernă în PHP. Echipa a setat un flux de lucru standard, dar nou pentru mine: Docker, PHPStan, PHP_CodeSniffer, PHPUnit, PR reviews, spații de testare pentru dev și prod. Este un flux care are sens și permite dezvoltarea unei aplicații enterprise care, pe măsură ce crește, devine din ce în ce mai greu de gestionat în mod clasic. Este un flux pe care acum îl folosesc zilnic.

Unde am participat în dezvoltare

Majoritatea caracteristicilor dezvoltate de mine au fost CRUD-uri simple, însă au fost și câteva lucruri mai notabile.

Implementarea extragerii de date dintr-un fișier folosind AI și un server MCP

Această funcționalitate a fost extrem de interesantă. Fișierele erau încărcate într-un S3 Bucket, scanate de AI și trimise pentru corelarea în formulare. De ce a fost interesant? Deși foloseam un server MCP (Model Context Protocol), colectarea de date folosind AI este mereu o provocare. AI-ul are implicit o rată de eroare și este foarte improbabil să obții rezultate constante, dar scopul era completarea a ceea ce se poate, pentru a asista fluxul de muncă.

Am ales să fac o schemă JSON bazată pe formular. În acest fel, serverul MCP primea tot timpul câmpurile necesare. Acea schemă era trimisă pentru răspunsul AI, iar de acolo datele găsite puteau fi autocompletate și corelate ușor.

Utilizarea unui message queue folosind RabbitMQ

Această implementare a fost integrată în funcționalitatea de facturare. Softul permite operarea de companii multiple, prin urmare unele funcționalități, cum ar fi seriile de facturi, au mai multe criterii de unicitate. Cea mai bună metodă de implementare, date fiind sistemul și criteriile, a fost utilizarea unui message queue.

Utilizarea API Platform pentru aplicația de mobil

Softul are în componență și o aplicație de mobil pentru operatorii din teren. O parte din funcționalitățile dezvoltate a fost crearea de endpoint-uri API pentru acea aplicație. Aici am văzut valoarea API Platform împreună cu Symfony. Este extrem de simplu pentru dezvoltarea de API-uri și, ca bonus, acestea vin gata documentate.

Utilizarea EasyAdmin pentru dashboard

EasyAdmin a fost singura componentă din acest stack cu care nu m-am înțeles neapărat. Este foarte strict la utilizarea datelor și incredibil de inflexibil pentru cerințe custom. I-am văzut valoarea pentru a construi un dashboard rapid și fără efort, însă într-un ERP cu cerințe complexe părea că îngreunează treaba în loc să ajute.

În concluzie

Symfony mi se pare framework-ul perfect de lucrat în echipă la un proiect enterprise, însă cel mai impresionant punct a rămas componenta de Doctrine ORM. Symfony este o unealtă extrem de puternică și versatilă, însă nu este neapărat prietenoasă cu începătorii.

În acest moment, încă folosesc CodeIgniter 4 în aplicațiile mele. Pentru mine pare un compromis bun între viteza de dezvoltare și calitatea obținută, însă nu este chiar un CodeIgniter clasic. Unul dintre lucrurile preluate din Symfony este layer-ul de Servicii. Deși CodeIgniter nu are o componentă nativă de ORM, se poate lucra cu el într-un mod "ORM-like", care necesită un pic de atenție pentru a nu genera interogări de tip N+1, dar care îmbunătățește semnificativ experiența de dezvoltare.

Te gândești să îmbunătățești compania cu un sistem web?

Consultația este gratuită. Costul este pe oră sau pe proiect.

De la actualizare sisteme vechi la îmbuntatirea de sisteme actuale, te pot ajuta să vezi dacă ce îți propui este viabil și îți pot da un cost aproximativ.

Articole recente