Blog2018-07-26T01:39:21+02:00

Anemic Domain Model

TL;DR: le tue classi model sono un insieme di proprietà private e metodi getter e setter? Probabilmente stai implementando degli degli Anemic Domain Model. Questo modo di modellare la realtà si scontra con i principi base della programmazione ad oggetti ed è considerato un anti-pattern. In questo articolo ti spiegherò il perché e ti fornirò una valida alternativa. Sono ormai diversi anni che mi occupo di sviluppo software e una delle cose in cui mi sono imbattuto in tantissimi progetti è stato l'Anemic Domain Model. Stranamente questo modo di strutturare il Model è presente in libri, tutorial e sembra essere considerato come l'unica scelta da molti sviluppatori. Personalmente non mi ha mai convinto e ho sempre cercato un'alternativa. La svolta è arrivata quando ho iniziato ad interessarmi di Domain Driven Design (da qui in avanti DDD) e sono venuto a conoscenza del fatto che all'Anemic Domain Model si contrappone il [...]

By |Marzo 30th, 2019|Categories: Software engineering|Tags: |0 Comments

Autenticazione tramite JWT in Symfony

In questo periodo sto lavorando su un progetto basato su Symfony 4. Il back-end consiste di una serie di API RESTful mentre il front-end è realizzato in Vue con alcune pagine renderizzate partendo da template Twig. In brevissimo tempo si è posto il problema dell'autenticazione. Il team di back-end developer aveva l'esigenza che le API fossero stateless in accordo con le specifiche dell'architettura REST. Tuttavia il sistema di autenticazione di default di Symfony è basato sul session cookie di PHP e questo fa si che il requisito della statelessness venga meno. Inizialmente si è deciso di implementare un doppio sistema di autenticazione: uno basato sulla PHP session per i controller web e uno basato su JWT (JSON Web Tokens) mediante l'impiego del LexikJWTAuthenticationBundle per le API. In brevissimo tempo i front-end developer ci hanno informati della difficoltà di gestire un doppio sistema di autenticazione chiedendoci di porre rimedio. Una [...]

By |Marzo 20th, 2019|Categories: PHP, Symfony|Tags: , , |0 Comments

Programmazione funzionale in PHP

La programmazione funzionale sta acquisendo sempre più popolarità. Tanti linguaggi basati su questo paradigma stanno venendo alla ribalta. Il PHP non è un linguaggio funzionale ma a partire dalla versione 5.3 ha introdotto gradualmente una serie di costrutti che supportano questo paradigma. La programmazione funzionale in PHP permette di migliorare il codice rendendolo più leggibile e di conseguenza più mantenibile. Ma cos'è la programmazione funzionale? Cos'è la programmazione funzionale? La programmazione funzionale (functional programming) è un paradigma di programmazione basato sul concetto di funzioni matematiche. Si definisce funzione matematica quella legge che associa ad ogni elemento di un insieme A uno ed un solo elemento dell’insieme B. La programmazione funzionale permette di realizzare software composto da funzioni pure (pure functions) ovvero funzioni prive di effetti collaterali che per un determinato input restituiscono sempre il medesimo output. Si evitano quindi stati condivisi (shared state), dati mutabili (mutable data) ed effetti [...]

By |Novembre 26th, 2018|Categories: PHP|Tags: , |0 Comments