Heyo internalitos, I was thinking of having the possibility to use `readonly` (or any other keyword) to make a function argument behave as if it was a readonly object.
class Point { public int $x; public int $y; } function doThing(readonly Point $p) { $p->x = 10; // Not allowed } In C# it's called in/out/ref types: https://www.pluralsight.com/guides/csharp-in-out-ref-parameters The main use-case is to not give away more access than you have to, and being able to state your intent in the function signature. Another alternative would be to allow properties in interfaces, and then define a readonly-like interface: interface ReadonlyPoint { public readonly int $x; public readonly int $y; } function doThing(ReadonlyPoint $p) { $p->x = 10; // Not allowed } No idea about practical feasability. Since arrays are value types, they're not really relevant for this suggestion. Same goes for string, int, etc. Regards Olle -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php