Re: [Proposal] Struct Data Types

From: Date: Fri, 15 Mar 2019 09:51:38 +0000
Subject: Re: [Proposal] Struct Data Types
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-104734@lists.php.net to get a copy of this message
On Fri, 15 Mar 2019 at 03:48, Kenneth Ellis McCall <xellisx@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]

« previous php.internals (#104734) next »