È iniziato il beta testing di PHP 8

Introdotto la prima versione beta del nuovo ramo del linguaggio di programmazione PHP 8. Il rilascio è previsto per il 26 novembre. Allo stesso tempo, sono state rilasciate versioni correttive di PHP 7.4.9, 7.3.21 e
7.2.33, che ha eliminato errori e vulnerabilità accumulati.

Il principale innovazioni Php 8:

  • Включение Compilatore JIT, il cui utilizzo migliorerà la produttività.
  • Sostegno argomenti della funzione denominata, che consentono di passare valori alla funzione in relazione ai nomi, ad es. È possibile passare argomenti in qualsiasi ordine e definire argomenti facoltativi. Ad esempio, "array_fill(start_index: 0, num: 100, valore: 50)".
  • Quando si chiamano metodi permesso utilizzando l'operatore “?”, che consente di avviare una chiamata solo se il metodo è presente, evitando controlli inutili per la restituzione del valore “null”. Ad esempio, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • Sostegno tipologie sindacali, definendo raccolte di due o più tipi (ad esempio, "funzione pubblica foo(Foo|Bar $input): int|float;").
  • Sostegno attributi (annotazioni) che consentono di associare metadati (come informazioni sul tipo) alle classi senza utilizzare la sintassi Docblock.
  • Supporto espressivo stile, che, a differenza di switch, può restituire valori, supportare condizioni di combinazione, utilizzare confronti di tipi rigorosi e non richiedere una specifica di "interruzione".

    $risultato = corrispondenza($input) {
    0 => "ciao",
    '1', '2', '3' => “mondo”,
    };

  • Sintassi abbreviata definizioni di classe, che consentono di combinare la definizione di un costruttore e le proprietà.
  • Nuovo tipo di reso - statico.
  • Nuovo tipo - misto, che può essere utilizzato per determinare se una funzione accetta parametri di tipo diverso.
  • espressione gettare per gestire le eccezioni.
  • Mappa debole per creare oggetti che possono essere sacrificati durante la garbage collection (ad esempio, per archiviare cache non necessarie).
  • Opportunità utilizzando l'espressione “::class” per gli oggetti (analoga alla chiamata get_class()).
  • Opportunità definizioni nel blocco catch delle eccezioni che non sono legate alle variabili.
  • Opportunità lasciando una virgola dopo l'ultimo elemento nell'elenco dei parametri della funzione.
  • Nuove interfacce Stringabile per identificare eventuali tipi di stringa o dati che possono essere convertiti in una stringa (per i quali è disponibile il metodo __toString()).
  • Nuova caratteristica str_contains(), un analogo semplificato di strpos per determinare l'occorrenza di una sottostringa, nonché le funzioni str_starts_with() e str_ends_with() per verificare le corrispondenze all'inizio e alla fine di una stringa.
  • Funzione aggiunta fdiv(), che esegue un'operazione di divisione senza generare errori durante la divisione per zero.
  • Cambiato logica di unione delle stringhe. Ad esempio, l'espressione 'echo "sum:" . $a + $b' era precedentemente interpretato come 'echo ("sum: " . $a) + $b', mentre in PHP 8 verrà trattato come 'echo "sum: " . ($a + $b)'.
  • Stretto controllando le operazioni aritmetiche e di bit, ad esempio, le espressioni "[] % [42]" e "$oggetto + 4" genereranno un errore.
  • Implementato un algoritmo di ordinamento stabile in cui l'ordine di valori identici viene preservato tra esecuzioni diverse.
  • Fonte: opennet.ru

Aggiungi un commento