Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

228
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!