Readonly

A property can be declared with the readonly modifier, which prevents modification of the property after initialization.

Readonly also applies inside the __clone() magic method: cloning doesn’t allow for changing a readonly property.

A class may be readonly since version 8.2, making all of of its properties readonly too.

<?php

    class Test {
       public readonly string $prop;

       public function __construct(string $prop) {
           // Legal initialization.
           $this->prop = $prop;
       }
    }

    $test = new Test(foobar);
    // Legal read.
    var_dump($test->prop); // string(6) foobar

    // Illegal reassignment. It does not matter that the assigned value is the same.
    $test->prop = foobar;
    // Error: Cannot modify readonly property Test::$prop

?>

Documentation

See also PHP 8.1: Readonly Properties and The Hidden Surprises of PHP Readonly Properties.

Related : Class, __clone() Method, Properties, Clone, Property Type Declaration, Var, Writeable

Added in PHP 8.1