PHP 8.2
En php 8.1 se inclyen las propiedades de solo lectura que permiten que solo el objecto pueda establecer los valores a si mismo. En php 8.2 se puede hacer con respecto a la clase. Lo que nos dice la documentación es que si se marca la clase con el modificador readonly es para todas las propiedades de la clase y además, evita la creación de propiedades dinámicas y va a resultar imposible darles soporte usando AllowDynamicProperties, ya que dará un error en tiempo de compilación.
<?php
#[\AllowDynamicProperties]
readonly class Foo {
}
// Fatal error: Cannot apply #[AllowDynamicProperties] to readonly class Foo
?> Disjunctive Normal Form (DNF) TypeSegún el RFC DNF es la forma estandar de organizar expresiones booleanas. Esta funcionalidad nos va a permitir incluir en la declaración de funcionalidades expresiones boolenas para tipos, lo cual nos puede ahorrar código de verificación de tipos. Se ve mejor con un ejemplo:
class Foo {
public function bar((A&B)|null $entity) {
return $entity;
}
}Allow null, false, and true as stand-alone typesOtra funcionalidad interesante añadida. Antes de esto, si teníamos un método o funcionalidad que tuviera que retornar siempre true (por ejemplo) teníamos que establecer como tipo de retorno el tipo genérico bool. Ahora podemos indicar de forma específica que es lo que tiene que retornar.
class Falsy
{
public function alwaysFalse(): false { /* ... */ *}
public function alwaysTrue(): true { /* ... */ *}
public function alwaysNull(): null { /* ... */ *}
}New "Random" extensionPHP parece que ha tenido siempre problemas con la implementación de generadores de números aleatorios con RNG. En esta versión nos proporcionan un API de alto nivel para poder manejar diferentes algoritmos modernos.
use Random\Engine\Xoshiro256StarStar;
use Random\Randomizer;
$blueprintRng = new Xoshiro256StarStar(
hash('sha256', "Example seed that is converted to a 256 Bit string via SHA-256", true)
);
$fibers = [];
for ($i = 0; $i < 8; $i++) {
$fiberRng = clone $blueprintRng;
// Xoshiro256**'s 'jump()' method moves the blueprint ahead 2**128 steps, as if calling
// 'generate()' 2**128 times, giving the Fiber 2**128 unique values without needing to reseed.
$blueprintRng->jump();
$fibers[] = new Fiber(function () use ($fiberRng, $i): void {
$randomizer = new Randomizer($fiberRng);
echo "{$i}: " . $randomizer->getInt(0, 100), PHP_EOL;
});
}
// The randomizer will use a CSPRNG by default.
$randomizer = new Randomizer();
// Even though the fibers execute in a random order, they will print the same value
// each time, because each has its own unique instance of the RNG.
$fibers = $randomizer->shuffleArray($fibers);
foreach ($fibers as $fiber) {
$fiber->start();
}Constants in traitsNo permite acceder a la constante directamente del trait, pero permite acceder desde la clase que lo implementa.
trait Foo
{
public const CONSTANT = 1;
}
class Bar
{
use Foo;
}
var_dump(Bar::CONSTANT); // 1
var_dump(Foo::CONSTANT); // Error
Artículos recientes
Artículo
Gnome: Desarrollo de aplicaciones. Pango
04/09/2026
Artículo
Gnome: Desarrollo de aplicaciones. VAPI
03/09/2026
Artículo
Gnome: Desarrollo de aplicaciones. MVVM
15/08/2026
Artículo
Gnome: Desarrollo de aplicaciones. Construyendo una nueva aplicación
10/08/2026
Artículo
Linux: Guía de iniciación a Linux
08/08/2026
Noticia
Wayland
08/08/2026