Sviluppo PHP. Componente console di Symfony - Suggerimenti e trucchi
Questo articolo è stato creato con l'obiettivo di mostrare i consigli e i trucchi più utili e interessanti sullo sviluppo di Symfony Console.
È stato scritto più di un articolo sugli errori commessi durante il processo di gestione di un progetto, ma raramente si guarda ai requisiti del progetto e alla gestione dei rischi in base alla tecnologia scelta.
PHP, come altri linguaggi, ha alcuni svantaggi che non valgono nulla quando si tratta di gestire un'applicazione di IT progetto dove PHP è la lingua principale.
Di seguito abbiamo stilato un elenco di questi, insieme ai consigli per evitarli.
PHP è considerato un "linguaggio facile" perché ha una barriera d'ingresso molto bassa. Ne consegue una grande disparità negli standard di codifica e nelle modalità di implementazione delle interfacce globali nelle varie librerie esterne. Nel tentativo di mettere ordine, è stato introdotto un insieme di standard. Questi descrivono un insieme di modi in cui lo sviluppatore dell'implementazione può soddisfare qualsiasi serie di vincoli richiesti dallo standard. Un semplice esempio per Dispacciatore di eventi:
Ascoltatore - Un ascoltatore è un qualsiasi PHP che si aspetta di ricevere un evento. A zero o più ascoltatori può essere passato lo stesso evento. Un ascoltatore PUÒ richiedere un altro comportamento asincrono, se lo desidera.
Utilizzando questo standard, ogni sviluppatore che utilizza la nomenclatura PSR-compiant può facilmente non solo comunicare con, ma anche codice con altri sviluppatori.
La messa in pratica di questi standard, ad esempio con l'utilizzo di PHP Il modo giusto e le librerie che supportano le interfacce PSR globali, permette di Sviluppatori PHP per adattarsi più rapidamente ai cambiamenti dei requisiti funzionali, architettonici e infrastrutturali.
Come manutentore della base di codice, ricordate sempre di usare versioni stabili e collaudate delle librerie esterne e, se siete costretti a usare una soluzione personalizzata, implementatela usando i PSR PHP.
Un elenco di tutti gli standard disponibili è disponibile sul sito web principale. PHP-FIG. Gli standard estesi con le descrizioni pratiche sono disponibili in diversi formati presso l'Istituto di ricerca. PHP Il modo giusto homepage.
Le migliori librerie conformi agli standard PHP-FIG sono elencate nella sezione Lega PHP sito web.
Nei progetti che utilizzano il gestore delle dipendenze Compositore Spesso si verifica una situazione in cui, dopo un lungo periodo di sostegno e mantenimento del prodotto nell'ambiente di produzione, è necessario implementare le modifiche funzionali senza ricostruire l'intera architettura. Il più delle volte il progetto viene preso in carico da un programmatore, il cui compito è lanciare l'ambiente di sviluppo locale e iniziare a lavorare sui ticket. Sulla base del composer.lock
lo sviluppatore è in grado di ripristinare il progetto allo stato in cui si trovava nell'ambiente di produzione, ma qualsiasi modifica al file composer.json
ad esempio aggiungendo la libreria, causerà una cascata di errori che aumenterà il tempo effettivo di implementazione di un nuovo file squadra membro dell'organizzazione e il tempo di sviluppo della soluzione.
Una volta che l'applicazione è stabile, il manutentore del codice deve bloccare le versioni delle librerie nella cartella composer.json
e creare una procedura chiara che descriva come aggiornare le loro versioni se necessario in futuro.
Considerate anche la possibilità di eseguire un meccanismo per controllare lo stato di sicurezza delle librerie utilizzate e automatizzare il processo di fornitura degli aggiornamenti di sicurezza.
Utilizzando strumenti gratuiti come Dependabotin questo modo possiamo mantenere un'infrastruttura di versioning coerente e gestibile per le librerie dipendenti e fornire una garanzia di sicurezza per la nostra applicazione.
> È solo un CRUD, perché preoccuparsi?
> Esiste una libreria che fa esattamente questo!
Nel PHP è facile cadere nel vortice della dimenticanza quando si implementa la logica di business di un prodotto. Nel corso degli anni sono stati realizzati centinaia di progetti che [creano pannelli amministrativi per gestire i modelli di dati](https://backpackforlaravel.com/), [generano visualizzazioni simili a Google Analytics](https://github.com/Kunstmaan/KunstmaanDashboardBundle) o [risolvono i problemi asincroni di PHP](https://laravel.com/docs/9.x/octane) con un tocco di bacchetta magica (OK, con una singola query da riga di comando).
Il mondo PHP è pieno di implementazioni già pronte che funzionano il 99,9% delle volte.
È qui che la logica aziendale si scontra con i limiti funzionali delle librerie utilizzate.
Sono questi i cosiddetti "throw-in" più difficili da implementare alla fine del progetto.
Non c'è possibilità di trovare la media aurea tra l'overengineering e l'under engineering senza un'adeguata comprensione del settore di attività del prodotto.
Con l'avvio team di sviluppo Se si entra nella fase iniziale del prodotto e si lavora in modo proattivo con il proprietario del prodotto, si può ridurre al minimo il rischio di utilizzare una soluzione che non funzionerà come investimento a lungo termine.
PHP non è perfetto, questo è certo. Le sue carenze in termini di tipizzazione statica, la mancanza di supporto ai generici e il continuo supporto a metodi arcaici sono ancora fonte di scherzi tra i programmatori. Tuttavia, da qualche tempo Sviluppatori PHP sono stati dotati di strumenti sempre più potenti, come PHPStan, Xdebug, PHP-CS-Fissatore che permettono di mantenere la coerenza e la tipizzazione statica, evitando così molti bug. Tuttavia, si presta troppa poca attenzione ai test che, se implementati correttamente, portano a un rapido ritorno dell'investimento sotto forma di
- riduzione degli errori di regressione
- maggiore consapevolezza delle capacità del prodotto
- aumentare il senso di proprietà del codice da parte degli sviluppatori
Non tagliate i costi dei test. Scrivere semplici script Behat non è poi così difficile, non è necessario scrivere subito complessi test end-to-end o entrare nei dettagli dell'implementazione e testare unitariamente ogni metodo.
Un semplice test Behat descritto nel linguaggio naturale del dominio vale spesso più del più meticoloso test end-to-end.
Il Lingua PHP e i suoi due framework più potenti Laravel e Symfony sono pienamente adatti a creare un'architettura moderna, funzionale e soprattutto ad alte prestazioni. Il supporto per diversi sistemi di code di messaggi e la sempre più veloce PHP Il miglioramento delle prestazioni di versione in versione ci permette di creare facilmente microservizi basati su microframework. Per la maggior parte, tuttavia, ci affidiamo ancora a sistemi monolitici. Non c'è nulla di male in questo, ma quando si considera lo sviluppo di tali sistemi bisogna prestare molta attenzione ai confini del dominio e determinare il punto di interfaccia tra le nuove soluzioni e le parti più vecchie del sistema.
Quando si sviluppa una qualsiasi PHP sito web, vale la pena di esaminare attentamente le soluzioni attuali, creare interfacce globali per la comunicazione dei dati e implementare nuove funzionalità utilizzando le tecniche e le pratiche più recenti. Una delle soluzioni più diffuse e utilizzate nella pratica è Modello Strangolatore.