Ha comenzado la prueba alfa de PHP 8.2

Se ha presentado la primera versión alfa de la nueva rama del lenguaje de programación PHP 8.2. El lanzamiento está previsto para el 24 de noviembre. Las principales innovaciones ya disponibles para pruebas o previstas para su implementación en PHP 8.2:

  • Se agregaron tipos separados "falso" y "nulo", que se pueden usar, por ejemplo, para devolver una señal de finalización con un error o un valor vacío por una función. Anteriormente, "falso" y "nulo" solo se podían usar junto con otros tipos (por ejemplo, "cadena|falso"), pero ahora se pueden usar por separado: function alwaysFalse(): false { return false; }
  • Se agregó la capacidad de marcar una clase como de solo lectura. Las propiedades de tales clases se pueden establecer solo una vez, después de lo cual no estarán disponibles para cambios. Anteriormente, las propiedades de clase individuales podían marcarse como de solo lectura, pero ahora puede activar este modo para todas las propiedades de clase a la vez. Especificar el indicador de "solo lectura" en el nivel de clase también bloquea la adición dinámica de propiedades a la clase. clase de solo lectura Publicación { función pública __construct( cadena pública $título, autor público $autor, ) {} } $publicación = nueva publicación(/* … */); $publicación->desconocido = 'incorrecto'; // Error: No se puede crear la propiedad dinámica Publicación::$desconocido
  • La capacidad de crear dinámicamente propiedades en una clase ha quedado obsoleta (como "post->unknown" en el ejemplo anterior). En PHP 9.0, acceder a propiedades no definidas originalmente en la clase generará un error (ErrorException). Las clases que proporcionan métodos __get y __set para crear propiedades o propiedades dinámicas en stdClass continuarán funcionando sin cambios, solo se detendrá el trabajo implícito con propiedades inexistentes para proteger al desarrollador de errores ocultos. Para mantener el código antiguo funcionando, se propone el atributo "#[AllowDynamicProperties]", que permite el uso de propiedades dinámicas.
  • Proporcionó la capacidad de filtrar configuraciones confidenciales en la salida de seguimiento de la pila en el momento de un error. Es posible que sea necesario recortar cierta información cuando la información sobre los errores que ocurren se envía automáticamente a servicios de terceros que rastrean los problemas e informan a los desarrolladores sobre ellos. Por ejemplo, puede excluir parámetros del seguimiento que incluyen nombres de usuario, contraseñas y variables de entorno. prueba de función ($foo, #[\SensitiveParameter] $contraseña, $baz) { throw new Exception('Error'); } prueba('foo', 'contraseña', 'baz'); Error fatal: Excepción no detectada: Error en test.php:8 Rastreo de pila: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} lanzado en test.php en la línea 8
  • La capacidad de sustituir valores de variables en cadenas usando las expresiones "${var}" y ${(var)}" ha quedado obsoleta. Se ha conservado la compatibilidad con las sustituciones "{$var}" y "$var" de uso común. Por ejemplo: "Hola {$mundo}"; OK "Hola $mundo"; OK "Hola ${mundo}"; En desuso: el uso de ${} en cadenas está en desuso
  • Llamables parcialmente compatibles en desuso que se pueden llamar a través de "call_user_func($callable)", pero no admiten llamadas en la forma "$callable()": "self::method" "parent::method" "static::method" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar:: method"]
  • Se implementó la conversión de casos independiente de la configuración regional. Funciones como strtolower() y strtoupper() ahora siempre convierten el caso de los caracteres en el rango ASCII, como cuando se establece la configuración regional en "C".

Fuente: opennet.ru

Añadir un comentario