È iniziato il beta testing di PHP 8

Presentato prima beta release del nuovo ramo del linguaggio di programmazione PHP 8. Il rilascio è previsto per il 26 novembre. Allo stesso tempo, sono stati rilasciati 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:

  • Inclusione del compilatore JIT, il cui utilizzo porterà a un aumento delle prestazioni.
  • Supporto argomenti nominati delle funzioni, che consentono di passare valori alla funzione legandoli ai nomi, cioè è possibile passare argomenti in ordine arbitrario e definire argomenti opzionali. Ad esempio, «array_fill(start_index: 0, num: 100, value: 50)».
  • Nella chiamata ai metodi è consentito l'uso dell'operatore «?», che consente di avviare la chiamata solo se il metodo è presente, evitando così controlli superflui per il valore di ritorno «null». Ad esempio, «$dateAsString = $booking->getStartDate()?->asDateTimeString()»;
  • Supporto tipi union, che definiscono collezioni di due o più tipi (per esempio «public function foo(Foo|Bar $input): int|float;»).
  • Supporto attributi (annotazioni), che permettono di associare metadati (ad esempio, informazioni sui tipi) a classi senza utilizzare la sintassi Docblock.
  • Supporto per espressioni match, che a differenza di switch possono restituire valori, supportano la combinazione di condizioni, utilizzano il confronto rigoroso dei tipi e non richiedono di specificare «break».

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

  • Sintassi semplificata per la definizione delle classi, che consente di unire la definizione del costruttore e delle 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 tipi diversi.
  • Espressione throw per la gestione delle eccezioni.
  • WeakMap per la creazione di oggetti che possono essere raccolti durante la raccolta dei rifiuti (per esempio, per la memorizzazione di cache facoltativi).
  • Capacità uso dell'espressione «::class» per gli oggetti (equivalente alla chiamata di get_class()).
  • Capacità definizione nel blocco catch di eccezioni non legate a variabili.
  • Capacità lasciare il simbolo di virgola dopo l'ultimo elemento nell'elenco dei parametri della funzione.
  • Nuova interfaccia Stringable per identificare qualsiasi tipo di stringa o dato che può essere convertito in una stringa (per cui è disponibile il metodo __toString()).
  • La nuova funzione str_contains(), un'alternativa semplificata a strpos per determinare la presenza di una sottostringa, oltre alle funzioni str_starts_with() e str_ends_with() per verificare corrispondenze all'inizio e alla fine della stringa.
  • Funzione aggiunta fdiv(), che esegue l'operazione di divisione senza generare un errore in caso di divisione per zero.
  • Modificata la logica di concatenazione delle stringhe. Per 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, l'espressione «[] % [42]» e «$object + 4» genereranno un errore.
  • Realizzato algoritmo di ordinamento stabile, in cui l'ordine di apparizione dei valori identici viene mantenuto 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