Re: [lists.php] Re: [PHP-DEV] a couple of thoughts on the DateTime type debate
| From: | ALeX | Date: | Fri, 05 Apr 2013 14:00:55 +0000 |
| Subject: | Re: [lists.php] Re: [PHP-DEV] a couple of thoughts on the DateTime type debate | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-66985@lists.php.net to get a copy of this message | ||
> I imagine the implementation could be something along the lines of checking
> for the '__struct' key when somebody attempts to use method-call syntax on
> an array, invoking the appropriate method with $this referencing the array
> you were using.
>
> The rest of the time, a struct, for all intents and purposes, is just an
> array.
One thing I do not like about the "struct as array" is that you can
create "invalid" structs, in classes you could have all variables
private and check during set, but not here: "$array = ['r'=>1,
'b'=>'yes', '__struct'=>'Color'];".
Hmm... just an thought: why not make struct almost like a class except
that $this is a copy (on write) - modifying and returning $this would
be a new instance of that struct/class. That would give you
public/private/static/variables/methods/interfaces/..., but it would
lead to another type.
Or use a keyword to the class, e.g. "autoclone class Color {...", and
not the new name struct -> it would be clear that struct/classes use
the same namespace.
You maybe even could do "autoclone class DateTimeImmutable extends
DateTime {}" to create the immutable version. (I see no reason why an
"normal" class could not be extended into autoclone, but useless in
most cases though)
On the other hand, I would just use an array. (without any "magic"
like methods on structs, yes you would have to write plain functions
and not use OOP like methods).