Comezaron as probas alfa de PHP 8.2

Presentouse a primeira versión alfa da nova rama da linguaxe de programación PHP 8.2. O lanzamento está previsto para o 24 de novembro. As principais novidades xa dispoñibles para probar ou previstas para a súa implementación en PHP 8.2:

  • Engadíronse tipos separados "falso" e "nulo", que se poden usar, por exemplo, para que unha función devolva un indicador de terminación de erro ou un valor baleiro. Anteriormente, “falso” e “nulo” só se podían usar xunto con outros tipos (por exemplo, “cadea|falso”), pero agora pódense usar por separado: function alwaysFalse(): false { return false; }
  • Engadiuse a posibilidade de marcar unha clase como de só lectura. As propiedades destas clases só se poden establecer unha vez, despois de que non se poden cambiar. Anteriormente, as propiedades individuais das clases podían marcarse de só lectura, pero agora podes activar este modo para todas as propiedades da clase á vez. Especificar a marca de "só lectura" a nivel de clase tamén impide que as propiedades se engadan dinámicamente á clase. clase de só lectura Publicar { función pública __construír( cadea pública $título, Autor público $autor, ) {} } $publicación = publicación nova (/* … */); $post->unknown = 'erróneo'; // Erro: non se pode crear a propiedade dinámica Post::$unknown
  • A capacidade de crear dinámicamente propiedades nunha clase (como "post->unknown" no exemplo anterior) quedou en desuso. En PHP 9.0, acceder a propiedades que non están definidas inicialmente na clase producirá un erro (ErrorException). As clases que proporcionan métodos __get e __set para crear propiedades ou propiedades dinámicas en stdClass seguirán funcionando sen cambios, só se admitirá o traballo implícito con propiedades inexistentes para protexer o programador de erros ocultos. Para preservar o traballo do código antigo, proponse o atributo "#[AllowDynamicProperties]", que permite o uso de propiedades dinámicas.
  • Ofrece a capacidade de filtrar parámetros sensibles na saída de rastrexo da pila durante un erro. Pode ser necesario recortar certa información cando a información sobre erros que se producen se envía automaticamente a servizos de terceiros que rastrexan os problemas e informan aos desenvolvedores sobre os mesmos. Por exemplo, pode excluír do rastrexo os parámetros que inclúen nomes de usuario, contrasinais e variables de ambiente. proba de función( $foo, #[\SensitiveParameter] $contrasinal, $baz ) { throw new Exception('Erro'); } test('foo', 'contrasinal', 'baz'); Erro fatal: Excepción non detectada: Erro en test.php:8 Trazo de pila: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {principal} lanzado en test.php na liña 8
  • A capacidade de substituír valores variables en cadeas usando as expresións "${var}" e ${(var)} quedou obsoleta. Mantívose o soporte para as substitucións "{$var}" e "$var" de uso habitual. Por exemplo: "Ola {$mundo}"; OK "Ola $ mundo"; OK "Ola ${world}"; Obsoleto: o uso de ${} en cadeas está en desuso
  • As chamadas parcialmente compatibles están obsoletas que se poden chamar mediante "call_user_func($callable)" pero non admiten chamadas en forma de "$callable()": "self::method" "parent::method" "static" ::method " ["self", "método"] ["pai", "método"] ["estático", "método"] ["Foo", "Bar::método"] [novo Foo, "Bar: :método" ]
  • Implementouse a conversión de maiúsculas e minúsculas independente da rexión. As funcións como strtolower() e strtoupper() agora converten sempre as maiúsculas e minúsculas dos caracteres no intervalo ASCII coma se definisen a configuración rexional "C".

Fonte: opennet.ru

Engadir un comentario