PHP 8.4: Asymmetric visibility for class properties

Version8.4
TypeNew Feature
class C {
    public private(set) int $a = 1;

    public function __construct() {
        unset($this->a);
    }
}
class D extends C {
    public function __unset($name) {
        unset($this->a);
    }
}
class C extends B {
    public mixed $x {
        set {
            $f = parent::$x::set(...);
            $f($value);
        }
    }
}
class B {
    public $x {
        set($value = null) {
            $field = $value;
        }
    }
}