On 17.07.2012, at 21:50, Stas Malyshev wrote:

> Hi!
> 
>> I am for making array a proper class with methods.
>> 
>> "Legacy" functions can be implemented as wrappers around it:
>> 
>>    function array_push(&$array, $value)
>>    {
>>        $array->push($value);
>>    }
> 
> The problem there is that array has different semantics than object. Not
> completely, but for example if you pass array to function, it is passed
> by value and is not modified, but objects are always mutable when passed
> to functions. Changing this semantics will break a lot of code.

Having special handling of Array objects doesn't sound good too. And I don't 
see any nice solution.

Options are:
* "5-to-6" tool, similar to python's "2-to-3" converter, which will fix code.
* introduce some kind of per-file declare() option, which would enable 
pass-by-reference semantics of arrays/strings/etc. in 5.5 which would let 
people write the same code for 5.5 and 6.x

Well, actually, there's one more option: we can introduce "Autocloned" 
interface (empty, without methods) and force "cloning" of objects, which 
implement this interface, during parameter-fetching phase.
This would allow us to have 2 sets of classes: One set which implements this 
interface (slower, but backwards-compatible) and another set which doesn't 
(faster, but not compatible).

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to