L'alpha test di PHP 8.2 è iniziato

Presentata la prima release alpha del nuovo ramo del linguaggio di programmazione PHP 8.2. L'uscita è prevista per il 24 novembre. Le principali innovazioni già disponibili per il test o pianificate per l'implementazione in PHP 8.2:

  • Sono stati aggiunti tipi separati "false" e "null", che possono essere utilizzati, ad esempio, per restituire un segno di completamento con un errore o un valore vuoto da una funzione. In precedenza, "false" e "null" potevano essere utilizzati solo insieme ad altri tipi (ad esempio, "string|false"), ma ora possono essere utilizzati separatamente: function alwaysFalse(): false { return false; }
  • Aggiunta la possibilità di contrassegnare una classe come di sola lettura. Le proprietà in tali classi possono essere impostate una sola volta, dopodiché non saranno più disponibili per la modifica. In precedenza, le singole proprietà delle classi potevano essere contrassegnate come di sola lettura, ma ora puoi attivare questa modalità per tutte le proprietà delle classi contemporaneamente. La specifica del flag "sola lettura" a livello di classe blocca anche l'aggiunta dinamica di proprietà alla classe. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->sconosciuto = 'sbagliato'; // Errore: impossibile creare la proprietà dinamica Post::$unknown
  • La capacità di creare dinamicamente proprietà in una classe è stata deprecata (come "post->unknown" nell'esempio precedente). In PHP 9.0, l'accesso a proprietà non originariamente definite nella classe risulterà in un errore (ErrorException). Le classi che forniscono metodi __get e __set per la creazione di proprietà o proprietà dinamiche in stdClass continueranno a funzionare invariate, solo il lavoro implicito con proprietà inesistenti verrà interrotto per proteggere lo sviluppatore da errori nascosti. Per mantenere funzionante il vecchio codice, viene proposto l'attributo "#[AllowDynamicProperties]", che consente l'utilizzo di proprietà dinamiche.
  • Fornita la possibilità di filtrare le impostazioni riservate nell'output della traccia dello stack al momento di un errore. Potrebbe essere necessario eliminare determinate informazioni quando le informazioni sugli errori che si verificano vengono inviate automaticamente a servizi di terze parti che tengono traccia dei problemi e ne informano gli sviluppatori. Ad esempio, è possibile escludere dalla traccia i parametri che includono nomi utente, password e variabili di ambiente. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Errore irreversibile: eccezione non rilevata: errore in test.php:8 Traccia dello stack: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} gettato in test.php sulla riga 8
  • La possibilità di sostituire i valori delle variabili in stringhe utilizzando le espressioni "${var}" e ${(var)}" è stata deprecata. Il supporto per le sostituzioni "{$var}" e "$var" di uso comune è stato mantenuto. Ad esempio: "Ciao {$world}"; OK "Ciao $mondo"; OK "Ciao ${mondo}"; Deprecato: l'uso di ${} nelle stringhe è deprecato
  • Chiamabili parzialmente supportati deprecati che possono essere chiamati tramite "call_user_func($callable)", ma non supportano la chiamata nella forma "$callable()": "self::method" "parent::method" "static::method" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar:: method"]
  • Conversione maiuscole/minuscole indipendente dalle impostazioni locali implementata. Funzioni come strtolower() e strtoupper() ora convertono sempre maiuscole e minuscole dei caratteri nell'intervallo ASCII, come quando si imposta la localizzazione su "C".

Fonte: opennet.ru

Aggiungi un commento