Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

231
Vistas
¿Cuál es el beneficio de solo lectura en PHP 8.1?

readonly ahora está disponible en PHP 8.1, solo me pregunto para qué sirve. ¿Es eso para ayudar al editor a saber que esta propiedad es solo de readonly o para ayudar al cliente a saber eso o hay otro beneficio?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Las propiedades de readonly le permiten crear objetos inmutables o, al menos, propiedades inmutables.

De esa manera, puede estar seguro de que un valor no cambiará por accidente después de inicializarse, a lo largo de la vida del objeto.

Es un concepto muy similar a las constantes (establecidas a través de const o define ), aunque con dos diferencias importantes:

  • las constantes deben definirse en el momento de la "compilación", mientras que las propiedades de readonly se establecerán durante el tiempo de ejecución, generalmente durante la instanciación del objeto (por lo que varias instancias podrán contener diferentes valores *)
  • a diferencia de las constantes, que viven en el ámbito global, y en el caso de las constantes de clase, su valor está vinculado a la clase y no a la instancia.

Podría lograr lo mismo con una propiedad privada a la que solo se puede acceder a través de un getter. Por ejemplo, en "los viejos tiempos":

 class Foo { private DateTimeImmutable $createAt; public function __construct() { $this->createdAt = new DateTimeImmutable(); } public getCreatedAt(): DateTimeImmutable { return $this->createdAt; } } $f = new Foo(); echo $f->getCreatedAt()->format('Ymd H:i:s');

El único problema con esto es que requiere mucho código repetitivo.

Con PHP 8.1. lo mismo podría lograrse haciendo:

 class Foo { public function __construct( public readonly DateTimeImmutable $createdAt = new DateTimeImmutable() ) { } } $f = new Foo(); echo $f->createdAt->format('Ymd H:i:s')
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda