On Fri, 15 Mar 2019 at 03:48, Kenneth Ellis McCall <xell...@gmail.com> wrote:
> PHP has many data types, but does not offer something that is the > equivalent to the C struct data type. > > The purpose of this RFC is to propose a data type of 'struct', which > would be a strictly typed, immutable data structure that resembles a mix > of a class and an array. > Hi Kenneth, I'm generally in favour of adding some kind of struct type to PHP, but I think "like in C" and "a mix of a class and an array" doesn't really sell what it is and why we want it. The important factors for me are: * Statically typed, unlike an array * Copy-on-write like an array, not pass-by-pointer like an object A truly immutable type, in the sense that its properties can never be changed after construction, seems like a slightly different proposition - C structs certainly aren't immutable in that sense - but maybe that's not what you meant. I'd always pictured it much more like a class definition, rather than the array-like syntax you show: struct Foo { boolean $prop1; int $prop2; } This is partly influenced by C#, which has structs as a special type of object, complete with constructors, methods, etc, which feels more powerful than an array with types: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/struct For the same reason, I would expect properties to be accessed as $foo->prop1, not $foo['prop1'] - these are declared properties like on an object, not keys in an expandable dictionary. Regards, -- Rowan Collins [IMSoP]