Sviluppare in PHP 7 (II edizione)


Il libro di Enrico Zimuel sullo sviluppo professionale di applicazioni web e API, aggiornato a PHP 7.4


Milano, Tecniche Nuove, 2019
Brossura, pp. 432, ISBN 978-8848140317

Acquista il libro

Prefazione (pdf - epub) del Prof. Giancarlo Ruffo - Università di Torino

I codici sorgenti del libro sono disponibili su github

Errata corrige (pdf)

Il libro

Il libro introduce allo sviluppo di applicazioni web professionali in PHP 7. La seconda edizione del libro ha due nuovi capitoli: il capitolo 11 sui design pattern in PHP e il capitolo 12 con le novità del PHP 7.3 e 7.4, come l'aggiunta del tipo per le proprietà di classe, il preloading, la funzionalità Foreign Function Interface (FFI), etc .

Gli argomenti presentati sono utili per iniziare a sviluppare in PHP o per approfondire le nuove funzionalità della versione 7. Se siete programmatori alle prime armi o se avete anni di esperienza, troverete comunque del materiale utile in questo libro.

Il testo parte dalle basi del linguaggio per arrivare allo sviluppo di applicazioni web basate su architetture MVC, utilizzando Zend Framework 3, o middleware tramite il progetto Expressive con lo standard PSR-7. Vengono presentati i moderni strumenti di sviluppo, come l’utilizzo di composer, la gestione dei codici sorgenti tramite git, i test unitari con PHPUnit, il deploy di applicazioni tramite Deployer e Ansible, la gestione dei database MySQL e MongoDB, l’utilizzo di ORM come Doctrine, etc.

Un intero capitolo è dedicato al tema dello sviluppo di web API con architetture REST, utilizzando un approccio middleware o tramite il progetto open source Apigility.

Indice del libro

Capitolo 1 - Introduzione al PHP

  • Storia ed evoluzione del PHP
  • Licenza d’utilizzo
  • Il logo e la mascot del PHP
  • L’interprete del linguaggio
  • L’ecosistema PHP
  • La community PHP
  • La scena italiana

Capitolo 2 - Il linguaggio

  • Hello World
  • Tipi di dati e variabili
    • Integer
    • Double
    • String
    • Array
    • Stringhe come array
  • Istruzioni condizionali
  • Cicli iterativi
    • For
    • While
    • Do-while
    • Break e continue
  • Funzioni
    • La visibilità delle variabili
    • Passaggio per valore o per riferimento
    • Parametri opzionali e operatore variadic
    • Funzioni ricorsive
    • Funzioni anonime
    • Gestione dei tipi in ingresso e uscita

Capitolo 3 - Programmazione ad oggetti

  • Le classi
  • Costruttore di classe
  • Namespace
  • Autoloading
  • Ereditarietà
  • Classi astratte e final
  • Interfacce
  • Entità statiche
  • Traits
  • Classi anonime

Capitolo 4 - Gestione degli errori

  • Tipi di errore
  • Log degli errori
  • Gestione delle eccezioni

Capitolo 5 - Organizzare un progetto in PHP

  • Composer
    • Aggiornare le dipendenze
    • Autoloading
    • Scelta del repository
  • Come scegliere un progetto open source
  • Versionamento dei sorgenti
    • Avviare un progetto con Git
    • Branch
    • Push nel repository github
    • Pull dal repository github
    • Gestione dei conflitti
    • Pull request
  • Test automatici con PHPUnit
    • Installazione di PHPUnit
    • Come scrivere un test automatico
    • Configurazione ed esecuzione di una suite di test
    • Code coverage
  • Organizzazione dei file

Capitolo 6 - File e database

  • Gestione dei file in PHP
    • Utilizzo di fwrite() e fread()
    • Lock dei file
    • File CSV
    • File JSON
    • File XML
  • Database
    • Utilizzo di PDO
    • ORM e Doctrine
    • Database NoSQL e MongoDB

Capitolo 7 - Il Web

  • il protocollo HTTP
    • Il web server
    • Apache
    • Nginx
    • PHP Web Server
    • Richieste HTTP in PHP
    • Risposte HTTP in PHP
  • Gestione di un template HTML
  • Invio di file
  • Cookie
  • Sessioni
  • Routing di una richiesta HTTP
  • Lo standard PSR-7

Capitolo 8 - Struttura e gestione di un’applicazione web

  • Architetture MVC
  • Architetture Middleware
  • Infrastruttura di un’applicazione web
  • Deploy di un’applicazione PHP
    • Deployer
    • Ansible
  • Sistemi di virtualizzazione

Capitolo 9 - Sviluppo di web API

  • Le caratteristiche di una web API
  • Architetture REST
    • HAL
  • Sviluppo di API REST middleware
  • Autenticazione e Autorizzazione
    • HTTP Basic Access Authentication
    • HTTP Digest Access Authentication
    • OAuth2
  • Documentazione
  • Apigility

Capitolo 10 - Sicurezza in PHP

  • Attaccare un'applicazione web
  • Injection
    • SQL Injection
    • Directory traversal
  • Cross-Site Scripting (XSS)
  • Proteggere dati sensibili
    • Memorizzare una password utente
    • Cifrare informazioni sensibili
    • Authenticated encryption
    • Crittografia a chiave pubblica
    • Autenticazione
  • Cross-Site Request Forgery (CSRF)
  • Utilizzo di librerie con vulnerabilità conosciute
  • Autorizzazioni
    • ACL, Access Control List
    • RBAC, Role-based Access Control

Capitolo 11 - Design Pattern in PHP

  • Tipologie di design pattern
  • Dependency injection
  • Pattern creazionali
    • Abstract Factory
    • Builder
    • Prototype
    • Singleton
  • Pattern strutturali
    • Adapter
    • Bridge
    • Decorator
    • Facade
    • Proxy
  • Pattern comportamentali
    • Chain of Responsibility
    • Command
    • Iterator
    • Observer
    • Strategy

Capitolo 12 - Le ultime novità di PHP

  • PHP 7.3
    • ext_skel
    • net_get_interfaces()
    • Nuova sintassi heredoc e nowdoc
    • Valori per riferimento in list()
    • Deprecato l’utilizzo di costanti case-insensitive
    • Aggiunte costanti predefinite cURL
    • FILTER_SANITIZE_ADD_SLASHES
    • Aggiunto il supporto al formato WebP
    • Nuove funzioni matematiche in GMP
    • JSON_THROW_ON_ERROR
    • is_countable()
    • array_key_first() e array_key_last()
    • gc_status()
    • hrtime()
    • Supporto di valori float in SimpleXML
    • Aggiunta la versione Argon2id per le password
    • Utilizzo di PCRE2 per le espressioni regolari
    • Utilizzo della virgola finale nelle funzioni
  • PHP 7.4
    • Aggiunto il tipo sulle proprietà di classe
    • FFI (Foreign Function Interface)
    • Pre-caricamento (preloading)
    • Spread operator sugli array
    • Funzioni freccia (arrow functions)
    • Operatore di assegnazione null coalescing
    • Riferimenti deboli (Weak References)
    • Covarianza e controvarianza
    • Nuovo meccanismo di serializzazione degli oggetti
  • Performance di PHP 7.3 e 7.4
  • PHP 8.0

L'Autore

Enrico Zimuel sviluppa applicazioni web dal 1996. Lavora come Principal Software Engineer presso Elastic (Mountain View, CA, USA). Sviluppatore open source, è co-autore dei progetti PHP Apigility, Expressive e Zend Framework. Docente presso l'ITS ICT Piemonte, dove tiene il corso di PHP Programming. E' un PHP Certified Engineer e membro dello Zend Education Advisory Board. Laureato cum laude in Economia Informatica ha svolto attività di ricerca in algoritmi e strutture dati presso l'Informatics Institute dell'Università di Amsterdam. Speaker TEDx e relatore in più di 100 conferenze internazionali. Sul tema dello sviluppo web ha già pubblicato i libri PHP Best Practices e Javascript Best Practices. Co-fondatore del PHP User Group di Torino, città dove vive e lavora (da remoto).

Maggiori informazioni sull'autore sono disponibili sul sito www.zimuel.it

Approfondimenti

Di seguito sono riportati alcuni approfondimenti dei temi trattati nel libro. La maggior parte di questi sono in inglese.

Installare PHP

PHP 7

Best Practices

Unit test e Test Driven Development (TDD)

Programmazione orientata agli oggetti in PHP

Database

Sicurezza in PHP

Sistemi cloud

News e podcast

Contatti

Se desideri contattare l'autore del libro, utilizza il modulo sottostante.