SlideShare a Scribd company logo
1 of 18
Download to read offline
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!
🙏

More Related Content

Similar to Typed models pug roma febbraio 2020

3 process intelligence.pptx
3 process intelligence.pptx3 process intelligence.pptx
3 process intelligence.pptxAlberto Franchi
 
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiDelphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiMarco Breveglieri
 
Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017
Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017
Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017Daniele Pozzobon
 
Scriptlance
ScriptlanceScriptlance
Scriptlancesleepyj
 
Scriptlance
ScriptlanceScriptlance
Scriptlancesleepyj
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsCommit University
 
Wordpress 3/7. temi e plugin
Wordpress 3/7. temi e pluginWordpress 3/7. temi e plugin
Wordpress 3/7. temi e pluginCity Planner
 
DevOps & ITIL: Friends or Foes?
DevOps & ITIL: Friends or Foes?DevOps & ITIL: Friends or Foes?
DevOps & ITIL: Friends or Foes?Luigi Buglione
 
Openerp contabilità 24 10-13
Openerp contabilità 24 10-13Openerp contabilità 24 10-13
Openerp contabilità 24 10-13Carlo Vettore
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!Stefano Fago
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Giulio Roggero
 

Similar to Typed models pug roma febbraio 2020 (20)

3 process intelligence.pptx
3 process intelligence.pptx3 process intelligence.pptx
3 process intelligence.pptx
 
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiDelphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
 
VS2013 what's new!!
VS2013 what's new!!VS2013 what's new!!
VS2013 what's new!!
 
Debugging with-z-ray
Debugging with-z-rayDebugging with-z-ray
Debugging with-z-ray
 
Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017
Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017
Using Visual Studio 2017 as a Fully Integrated DevOps Solution - VSSaturday 2017
 
Scriptlance
ScriptlanceScriptlance
Scriptlance
 
Scriptlance
ScriptlanceScriptlance
Scriptlance
 
Scriptlance
ScriptlanceScriptlance
Scriptlance
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
 
Wordpress 3/7. temi e plugin
Wordpress 3/7. temi e pluginWordpress 3/7. temi e plugin
Wordpress 3/7. temi e plugin
 
Drupal7
Drupal7Drupal7
Drupal7
 
DevOps & ITIL: Friends or Foes?
DevOps & ITIL: Friends or Foes?DevOps & ITIL: Friends or Foes?
DevOps & ITIL: Friends or Foes?
 
Openerp contabilità 24 10-13
Openerp contabilità 24 10-13Openerp contabilità 24 10-13
Openerp contabilità 24 10-13
 
Openerp contabilità 24 10-13
Openerp contabilità 24 10-13Openerp contabilità 24 10-13
Openerp contabilità 24 10-13
 
Guida C++
Guida C++Guida C++
Guida C++
 
Diagrammi Use Case
Diagrammi Use CaseDiagrammi Use Case
Diagrammi Use Case
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 
/ Strumenti digital per esportare - Webinar FarExport_Galbusera_10nov22.pdf
/ Strumenti digital per esportare - Webinar FarExport_Galbusera_10nov22.pdf/ Strumenti digital per esportare - Webinar FarExport_Galbusera_10nov22.pdf
/ Strumenti digital per esportare - Webinar FarExport_Galbusera_10nov22.pdf
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!
 

More from Massimiliano Arione

Disinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere feliciDisinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere feliciMassimiliano Arione
 
Scrivere e leggere log con elastic
Scrivere e leggere log con elasticScrivere e leggere log con elastic
Scrivere e leggere log con elasticMassimiliano Arione
 
Managing frontend libs in your Symfony project
Managing frontend libs in your Symfony projectManaging frontend libs in your Symfony project
Managing frontend libs in your Symfony projectMassimiliano Arione
 
Managing frontend libs in your php project
Managing frontend libs in your php projectManaging frontend libs in your php project
Managing frontend libs in your php projectMassimiliano Arione
 
Gestire librerie di frontend in php
Gestire librerie di frontend in phpGestire librerie di frontend in php
Gestire librerie di frontend in phpMassimiliano Arione
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioMassimiliano Arione
 
Gestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerGestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerMassimiliano Arione
 
Symfony: un framework per il web
Symfony: un framework per il webSymfony: un framework per il web
Symfony: un framework per il webMassimiliano Arione
 
Sviluppo rapido di applicazioni con PHP
Sviluppo rapido di applicazioni con PHPSviluppo rapido di applicazioni con PHP
Sviluppo rapido di applicazioni con PHPMassimiliano Arione
 

More from Massimiliano Arione (20)

Pipelines!
Pipelines! Pipelines!
Pipelines!
 
Il nostro amico Stan
Il nostro amico Stan   Il nostro amico Stan
Il nostro amico Stan
 
PSR7 - interoperabilità HTTP
PSR7 - interoperabilità HTTPPSR7 - interoperabilità HTTP
PSR7 - interoperabilità HTTP
 
Disinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere feliciDisinstallare fos user bundle e vivere felici
Disinstallare fos user bundle e vivere felici
 
MAGA - PUG Roma giugno 2017
MAGA - PUG Roma giugno 2017MAGA - PUG Roma giugno 2017
MAGA - PUG Roma giugno 2017
 
PHP7 e Rich Domain Model
PHP7 e Rich Domain ModelPHP7 e Rich Domain Model
PHP7 e Rich Domain Model
 
PHP on the desktop
PHP on the desktopPHP on the desktop
PHP on the desktop
 
Scrivere e leggere log con elastic
Scrivere e leggere log con elasticScrivere e leggere log con elastic
Scrivere e leggere log con elastic
 
The metrics
The metricsThe metrics
The metrics
 
Managing frontend libs in your Symfony project
Managing frontend libs in your Symfony projectManaging frontend libs in your Symfony project
Managing frontend libs in your Symfony project
 
Translating symfony docs
Translating symfony docsTranslating symfony docs
Translating symfony docs
 
Managing frontend libs in your php project
Managing frontend libs in your php projectManaging frontend libs in your php project
Managing frontend libs in your php project
 
Gestire librerie di frontend in php
Gestire librerie di frontend in phpGestire librerie di frontend in php
Gestire librerie di frontend in php
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggio
 
Gestione delle dipendenze con Composer
Gestione delle dipendenze con ComposerGestione delle dipendenze con Composer
Gestione delle dipendenze con Composer
 
Migrare da symfony 1 a Symfony2
 Migrare da symfony 1 a Symfony2  Migrare da symfony 1 a Symfony2
Migrare da symfony 1 a Symfony2
 
Case study OmniAuto.it
Case study OmniAuto.itCase study OmniAuto.it
Case study OmniAuto.it
 
Symfony: un framework per il web
Symfony: un framework per il webSymfony: un framework per il web
Symfony: un framework per il web
 
Paypal + symfony
Paypal + symfonyPaypal + symfony
Paypal + symfony
 
Sviluppo rapido di applicazioni con PHP
Sviluppo rapido di applicazioni con PHPSviluppo rapido di applicazioni con PHP
Sviluppo rapido di applicazioni con PHP
 

Typed models pug roma febbraio 2020