Typed models
25 febbraio 2020
Massimiliano Arione
https://massimilianoarione.it/
About
Warning! Experimental content
Questa presentazione deriva da esperienze
limitate. Usare con cautela.
PHP 7.4
ci ha portato alcune novità interessanti
➔ Preloading
più performance
➔ Arrow functions
più syntax sugar
➔ Typed properties
Bingo!
Come possiamo migliorare
ulteriormente
la nostra static
analyis?
Non la fai ancora?
Dai un’occhiata all’incontro
di maggio 2019
https://roma.grusp.o
rg/2019/07/incontro-
di-maggio-2019/
Togliendo un po’ di phpdoc!
E mettendo dei tipi VERI.
Circa il QUARANTA
PER CENTO della
nostra static analysy viene
ingannata da annotation in
phpdoc
Disclaimer
Le percentuali citate
potrebbero differire nella
vita reale.
Tipi di classi
Possiamo suddividere grossolanamente le classi
di un nostro progetto in 3 grandi gruppi:
➔ Controller
➔ Servizi
➔ Model 🎉
Controller
I controller sono delle classi un po’
particolari, non fatte per istanziare
oggetti ma piuttosto per contenere
brevi metodi
Definiti come
servizi?
Meglio di no, ma
eventualmente ricadiamo
nel caso successivo
Servizi
Son la gran parte del nostro codice, ma
sono immutabili.
Suggerimento: se hai un servizio non
immutabile, qualcosa non va.
Storia a scopo puramente illustrativo
Le classi di modello
sono la parte più
importante della
nostra applicazione
Videos!
2017
youtube.com/v/KxSEnYbxYRg
2016
vimeo.com/196398557
Model
Repository
gestiscono le entity a livello
collettivo
Entity
mappate su tabelle
Value object
“tipi” locali al servizio delle
entity. Immutabili
Entity
Value object
Repository
Hands on!
🙌
È ora di vedere un po’ di codice!
Prossimamente
Con PHP 8 potremmo (condizionale d’obbligo) avere
ulteriori miglioramenti nella static analysis
➔ Generics
class Entry<KeyType, ValueType>
➔ Immutable properties
immutable class Email
public immutable $email;
Grazie!
🙏

Typed models pug roma febbraio 2020