Re: [lists.php] Re: [PHP-DEV] a couple of thoughts on the DateTime type debate

From: 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).

« previous php.internals (#66985) next »