PHP 7.1: le novità della nuova versione

Introduzione

Le versioni Minor di PHP introducono miglioramenti incrementali al linguaggio senza alterare la compatibilità del codice esistente, garantendo che gli aggiornamenti non richiedano adattamenti significativi del software. PHP 7.1, in particolare, ha portato una serie di innovazioni pensate per migliorare la produttività, la sicurezza e la flessibilità, proseguendo l’evoluzione iniziata con PHP 7.0.

1. Tipi di Ritorno Nullable

Una delle novità principali di PHP 7.1 è il supporto per i tipi nullable. Applicabile sia per i tipi dei parametri di una funzione che per i tipi di ritorno. Ora è possibile dichiarare che una funzione può accettare o restituire un certo tipo o null, aggiungendo un punto interrogativo ? davanti al tipo.


function getUser(?int $id): ?User {
    // accetta un parametro int o null
    // Restituisce un oggetto User o null
}

2. Operatore void per il Tipo di Ritorno

PHP 7.1 ha introdotto anche il tipo di ritorno void, che indica che una funzione non restituisce alcun valore. Questo tipo offre maggiore chiarezza e leggibilità al codice.


function logMessage(string $message): void {
    echo $message;
}

3. Sintassi Iterable

PHP 7.1 aggiunge il tipo iterable, che consente di accettare array o oggetti che implementano l’interfaccia Traversable. Questa funzionalità aumenta la flessibilità del codice.


function processItems(iterable $items) {
    foreach ($items as $item) {
        // Processa ogni elemento
    }
}

4. Class Costanti Visibilità

Con PHP 7.1, è ora possibile definire la visibilità delle costanti di classe utilizzando le parole chiave public, protected o private. Questo miglioramento aiuta a proteggere meglio i dati e migliorare la sicurezza.


class MyClass {
    const PUBLIC_CONST_A = 1;
    public const PUBLIC_CONST_B = 2;
    protected const PROTECTED_CONST = 3;
    private const PRIVATE_CONST = 4
}

5. Destrutturare le chiavi degli array

Da PHP 7.1 è possibile destrutturare gli array specificando le chiavi con list() o con [].



$data = [
    ["id" => 1, "name" => 'Tom'],
    ["id" => 2, "name" => 'Fred'],
];

// list() style
list("id" => $id1, "name" => $name1) = $data[0];

// [] style
["id" => $id1, "name" => $name1] = $data[0];

// list() style
foreach ($data as list("id" => $id, "name" => $name)) {
    // logic here with $id and $name
}

// [] style
foreach ($data as ["id" => $id, "name" => $name]) {
    // logic here with $id and $name
}

Conclusione

PHP 7.1 ha portato numerosi miglioramenti che potenziano il linguaggio. Con l’introduzione dei tipi nullable, il tipo void, PHP prosegue nella direzione di un linguaggio moderno e flessibile.

Riferimenti Utili

PHP 7.0: le novità della nuova versione

Introduzione

PHP, come linguaggio di scripting, adotta il sistema di versionamento semantico (semantic versioning) per indicare il livello di cambiamenti introdotti con ogni aggiornamento. Questo sistema usa una sequenza di tre numeri: major, minor e patch, rappresentati rispettivamente come X.Y.Z (esempio: 7.0.1).

Ogni cifra indica l’entità delle modifiche:

  • Versione Major: Un aggiornamento significativo che può causare incompatibilità con versioni precedenti (come PHP 7). Viene rilasciato dopo qualche anno e segna importanti miglioramenti.
  • Versione Minor: Aggiornamenti intermedi che introducono nuove funzionalità senza intaccare la compatibilità (come PHP 7.1). Solitamente rilasciati una volta all’anno.
  • Versione Patch: Aggiornamenti minori che correggono bug o migliorano la sicurezza senza aggiungere funzionalità.

Riepilognado, PHP adotta il sistema di versionamento semantico strutturato in MAJOR.MINOR.PATCH. Le versioni vengono incrementate per indicare:

– MAJOR, modifiche strutturali non retrocompatibili
– MINOR, nuove funzionalità che mantengono la retrocompatibilità
– PATCH, correzioni di bug

il sistema di versionamento semantico prevede l’adozione di etichette aggiuntive che seguono MAJOR.MINOR.PATCH es pre indicare una versione pre-release.

PHP 7.0 rappresenta un momento cruciale nel linguaggio, segnando un enorme passo avanti in termini di prestazioni e funzionalità. In questo articolo, si esplorano le principali novità introdotte in PHP 7.0.

1. Miglioramenti delle Prestazioni

PHP 7.0 ha introdotto un nuovo motore di esecuzione, conosciuto come PHPNG (PHP Next Generation), che ha drasticamente migliorato le prestazioni. Grazie a questo, PHP 7 può processare il doppio delle richieste al secondo rispetto a PHP 5.6.

2. Operatore ‘Spaceship’ (<=>)

Un’innovazione introdotta in PHP 7 è l’operatore <=>, detto anche “operatore spaceship”. Questo operatore consente di confrontare due valori restituendo -1, 0 o 1, a seconda della relazione tra i valori. È molto utile per le funzioni di ordinamento personalizzato.


echo 1 <=> 2; // Output: -1
echo 1 <=> 1; // Output: 0
echo 2 <=> 1; // Output: 1

3. Dichiarazione dei Tipi

PHP 7.0 ha introdotto la possibilità di specificare i tipi dei parametri e i tipi di ritorno per le funzioni, aggiungendo maggiore sicurezza e prevedibilità al codice. È possibile specificare tipi come int, float, string e array.



function add(int $a, int $b): int {
    return $a + $b;
}

4. Null Coalescing Operator (??)

PHP 7.0 introduce l’operatore ?? (null coalescing), utile per gestire variabili non definite o con valore null. Questo operatore restituisce il primo operando se definito e diverso da null, altrimenti il secondo operando.


$username = $_GET['user'] ?? 'Ospite';

Questa istruzione è equivalente alla precedente sintassi:


$username = isset($_GET['user']) ? $_GET['user'] : 'Ospite';

5. Eccezioni ‘Engine’ e Nuovi Tipi di Errore

Con PHP 7.0 è stato introdotto un nuovo sistema di gestione degli errori con classi come Error e Exception. Questo ha semplificato la gestione delle eccezioni, permettendo agli sviluppatori di catturare e gestire più facilmente anche gli errori di sistema.

6. Funzione define() con Array Costanti

Un altro miglioramento in PHP 7.0 è la possibilità di definire costanti di tipo array. Questo semplifica la gestione delle configurazioni complesse senza la necessità di variabili globali.


define('FRUITS', ['apple', 'banana', 'cherry']);

Conclusione

PHP 7.0 ha rappresentato un’importante pietra miliare, portando miglioramenti sostanziali in termini di velocità, sicurezza e leggibilità del codice. Le nuove funzionalità, come l’operatore spaceship, il null coalescing operator e le dichiarazioni di tipo, hanno reso PHP più potente e versatile, soddisfacendo le esigenze degli sviluppatori moderni.

Riferimenti Utili

PHP 8.2: le novità della nuova versione

PHP 8.2 ha portato numerosi miglioramenti, nuove funzionalità e ottimizzazioni che rendono il linguaggio più moderno e sicuro, oltre a facilitare il lavoro degli sviluppatori. Qui di seguito ti elenco le principali novità introdotte da questa versione.

  1. Tipi di Dati ‘Readonly’ per le Proprietà di Classe

Con PHP 8.2, è stato introdotto il supporto per le proprietà readonly in classi e oggetti. Questa funzionalità permette di dichiarare proprietà che possono essere assegnate solo una volta, durante la creazione dell’oggetto, e poi non possono essere modificate. Questo miglioramento contribuisce alla creazione di oggetti immutabili.


class User {
public readonly string $username;
public function __construct(string $username) {
$this->username = $username;
}
}
$user = new User("Biagio");
// $user->username = "NuovoNome"; // Questo genererebbe un errore

  1. Deprecazione delle Proprietà Dinamiche

Con PHP 8.2, viene deprecato l’uso di proprietà dinamiche. Le proprietà dinamiche sono le proprietà aggiungere agli oggetti non previste nella definizione delle classe. A partire da questa versione, le proprietà dinamiche generano un avviso deprecazione e, in futuro, questa caratteristica potrebbe essere rimossa. Questo cambiamento incoraggia un design più rigoroso delle classi.


class Person {
public string $name;
}
$person = new Person();
$person->age = 30; // Genera un avviso di deprecazione

  1. Classi e Interfacce Final

2. Funzione randomizer per la Generazione di Numeri Casuali

Con PHP 8.2, è stata introdotta la funzione randomizer che consente una generazione casuale di numeri più sicura e avanzata. Questa funzione offre vari metodi per personalizzare la generazione di numeri, stringhe e byte casuali.


$random = new Randomizer(new Random\Engine\Mt19937());
echo $random->getInt(1, 100);

3. Nuovi Tipi di Pseudo-Interfacce

PHP 8.2 aggiunge i nuovi tipi di pseudo-interfacce, come Arrayable e Stringable. Questi tipi di interfacce aiutano a rendere il codice più chiaro e a rafforzare il controllo dei tipi.


class MyClass implements Stringable {
    public function __toString(): string {
        return 'Hello';
    }
}

4. Supporto per Parametri Sensibili

La funzione sensitive parameter consente di marcare i parametri di una funzione come sensibili, evitando la registrazione di informazioni riservate nei log. Questo migliora la sicurezza nella gestione dei dati sensibili.


function login(SensitiveParameter $password) {
    // Operazioni di login
}

Ecco alcuni riferimenti utili per approfondire ulteriormente le novità e i cambiamenti introdotti in PHP 8.2, nonché per rimanere aggiornati sulle future versioni del linguaggio:

  1. Sito Ufficiale di PHPphp.net: il sito ufficiale di PHP, dove puoi trovare la documentazione completa, i changelog delle versioni e le note di rilascio per ciascuna versione.

  2. Manuale di PHP 8.2php.net/releases/8.2: una guida dettagliata alle funzionalità introdotte in PHP 8.2, completa di esempi e spiegazioni tecniche.

  3. PHP RFCs (Request for Comments)wiki.php.net/rfc: il sito RFC di PHP, dove gli sviluppatori e la comunità propongono, discutono e votano sulle nuove funzionalità. Qui puoi esplorare il processo decisionale dietro ogni nuova funzionalità introdotta.

  4. PHP News e Blogphpdeveloper.org e phpweekly.com: risorse utili per seguire le novità del linguaggio e le discussioni su casi d’uso, buone pratiche e aggiornamenti di sicurezza.

  5. Comunità PHP su GitHubgithub.com/php: il repository ufficiale di PHP su GitHub, dove puoi seguire lo sviluppo, contribuire o semplicemente rimanere informato sulle modifiche in tempo reale.

Queste risorse offrono un supporto completo e aggiornato, e ti aiuteranno a integrare al meglio le novità di PHP 8.2.