È iniziato il beta testing di PHP 8

Presentato la prima beta release del nuovo ramo del linguaggio di programmazione PHP 8. Il rilascio è previsto per il 26 novembre. Sono stati inoltre creati aggiornamenti correttivi per PHP 7.4.9, 7.3.21 e
7.2.33, in cui sono stati risolti errori e vulnerabilità accumulati.

Principali novità PHP 8:

  • Attivazione del compilatore JIT, il cui utilizzo consentirà di aumentare le prestazioni.
  • Supporto argomenti nominati nelle funzioni, che permettono di passare i valori alle funzioni legandoli ai nomi, cioè si possono passare argomenti in ordine arbitrario e definire argomenti opzionali. Ad esempio, «array_fill(start_index: 0, num: 100, value: 50)».
  • Durante la chiamata ai metodi è consentito l'uso dell'operatore «?», che permette di iniziare la chiamata solo se il metodo è presente, evitando così controlli superflui sul valore di ritorno «null». Ad esempio, «$dateAsString = $booking->getStartDate()?->asDateTimeString()»;
  • Supporto tipi union, che definiscono collezioni di due o più tipi (ad esempio «public function foo(Foo|Bar $input): int|float;»).
  • Supporto attributi (annotazioni), che permettono di legare metadati (ad esempio, informazioni sui tipi) alle classi senza utilizzare la sintassi Docblock.
  • Supporto delle espressioni corrispondenza, che a differenza di switch possono restituire valori, supportano la combinazione di condizioni, utilizzano un confronto di tipo rigoroso e non richiedono l'indicazione di «break».

    $result = match($input) {
    0 => «hello»,
    ‘1’, ‘2’, ‘3’ => «world»,
    };

  • Sintassi abbreviata per la definizione delle classi, che consente di combinare la definizione del costruttore e le proprietà.
  • Nuovo tipo di valori restituiti — static.
  • Nuovo tipo — mixed, che può essere utilizzato per definire l'accettazione da parte di una funzione di parametri di diversi tipi.
  • Espressione throw per la gestione delle eccezioni.
  • WeakMap per creare oggetti che possono essere sacrificati durante la raccolta dei rifiuti (ad esempio, per memorizzare cache opzionali).
  • Possibilità uso dell'espressione «::class» per gli oggetti (equivalente alla chiamata di get_class()).
  • Possibilità definizioni nel blocco catch di eccezioni non legate a variabili.
  • Possibilità lasciare il simbolo della virgola dopo l'ultimo elemento nella lista dei parametri della funzione.
  • Nuova interfaccia Stringable per identificare qualsiasi tipo di stringa o dati che possono essere convertiti in una stringa (per i quali è disponibile il metodo __toString()).
  • Nuova funzione str_contains(), un analogo semplificato di strpos per determinare l'inserimento di una sottostringa, così come le funzioni str_starts_with() e str_ends_with() per verificare le corrispondenze all'inizio e alla fine della stringa.
  • È stata aggiunta una funzione fdiv(), che esegue l'operazione di divisione senza generare un errore in caso di divisione per zero.
  • Modificata la logica di concatenazione delle stringhe. Ad esempio, l'espressione ‘echo «sum: » . $a + $b’ veniva precedentemente interpretata come ‘echo («sum: » . $a) + $b’, mentre in PHP 8 sarà elaborata come ‘echo «sum: » . ($a + $b)’.
  • Inasprita la verifica delle operazioni aritmetiche e bitwise, ad esempio, le espressioni «[] % [42]» e «$object + 4» genereranno un errore.
  • Implementato un algoritmo di ordinamento stabile, in cui l'ordine degli stessi valori è preservato in esecuzioni diverse.
  • Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster