PHP 7.3: le novità della nuova versione

Introduzione

Le versioni Minor di PHP rappresentano una continua evoluzione del linguaggio, introducendo nuove funzionalità che ne migliorano la flessibilità e l’efficienza. PHP 7.3, in particolare, porta innovazioni che rendono la sintassi del linguaggio più chiara e semplificano la gestione delle operazioni complesse.

1. Funzione array_key_first() e array_key_last()

PHP 7.3 ha introdotto le nuove funzioni array_key_first() e array_key_last(), che consentono di ottenere rispettivamente la prima e l’ultima chiave di un array senza dover contare o iterare. Questa funzionalità semplifica le operazioni sugli array.


$arr = ['a' => 1, 'b' => 2, 'c' => 3];
$firstKey = array_key_first($arr); // Ritorna 'a'
$lastKey = array_key_last($arr);   // Ritorna 'c'

2. Espressione is_countable()

Con PHP 7.3 è stata introdotta la funzione is_countable(), che verifica se una variabile può essere contata. Questa novità elimina la necessità di scrivere controlli extra per evitare errori quando si utilizza la funzione count().


$data = [1, 2, 3];
if (is_countable($data)) {
    echo count($data);
}

3. Espressioni Flexible Heredoc e Nowdoc

PHP 7.3 ha migliorato la sintassi heredoc e nowdoc. A partire dalla versione 7.3 l’indentazione del testo parte dall’indentazione del marker di chiusura dell’ heredoc / nowdoc.


$text = <<<EOD
    Questo è un esempio
      di testo con heredoc
      in PHP 7.3.
  EOD;

4. Miglioramenti alla Sicurezza

PHP 7.3 ha introdotto vari miglioramenti in tema di sicurezza, tra cui il supporto per l’algoritmo di hashing Argon2id, che rappresenta un’evoluzione degli algoritmi precedenti ed è stato ottimizzato per la protezione delle password.


$hash = password_hash('password123', PASSWORD_ARGON2ID);

Conclusione

PHP 7.3 ha introdotto miglioramenti che semplificano la gestione dei dati e aumentano la sicurezza.

Riferimenti Utili

PHP 7.2: le novità della nuova versione

Introduzione

Le versioni Minor di PHP apportano nuove funzionalità e miglioramenti che rafforzano il linguaggio, mantenendo la compatibilità con la versione principale. PHP 7.2, in particolare, continua il lavoro delle precedenti versioni della serie 7, con novità che aumentano la sicurezza e la flessibilità del linguaggio.

1. Libreria di Criptografia Libsodium

PHP 7.2 ha integrato Libsodium come libreria di crittografia standard. Libsodium è moderna e sicura, supportando numerosi algoritmi per cifratura, decrittazione, hashing e autenticazione.


    //Encrypt a message with a symmetric (shared) key
    $key = sodium_crypto_secretbox_keygen();
    // Do not reuse $nonce with the same key
    $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
    $encrypted = sodium_crypto_secretbox('messaggio', $nonce, $key);

2. Dichiarazione degli Oggetti in Variabili

PHP 7.2 consente di dichiarare tipi oggetto nelle variabili dei parametri delle funzioni.


function processObject(object $obj) {
    // Esegue operazioni sull'oggetto
}

3. Funzione count() Migliorata

In PHP 7.2, la funzione count() ora genera un messaggio di errore quando viene applicata su argomenti non conteggiabili, come null. Questo miglioramento aiuta a prevenire errori di runtime.


$count = count(null); // Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given

5. Migliorate le funzioni per le Password

PHP 7.2 ha reso disponibile l’algoritmo Argon2 per l’hashing delle password es nella funzione password_hash.


$passwordHash = password_hash('password123', PASSWORD_ARGON2I);

Conclusione

PHP 7.2 ha introdotto miglioramenti sulla sicurezza, con l’integrazione di Libsodium, e supporto per l’algoritmo Argon2.

Riferimenti Utili

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