Re: Suggestion: echo function(var)[0];

From: Date: Sat, 05 Jun 2010 10:47:32 +0000
Subject: Re: Suggestion: echo function(var)[0];
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-48660@lists.php.net to get a copy of this message
I don't understand what is holding PHP back from having this syntax. Tig said: <? $tmp = getimagesize('./path/to/image'); echo $tmp[1]; ?> The need to assign the trivial variable $tmp first is completely arbitrary. Is it not a design goal somewhere that languages should allow the greatest degree of literal expression possible, consistent with existing syntax & semantics rules? I am new here but would be interested in helping with a patch (+ hopefully another RFC) for this. What exactly are the specific arguments against array dereferencing? - Harrison On Fri, Jun 4, 2010 at 4:19 PM, mathieu.suen <mathieu.suen@easyflirt.com>wrote: > On 06/04/2010 10:00 AM, Richard Quadling wrote: > >> On 4 June 2010 08:18, mathieu.suen<mathieu.suen@easyflirt.com> wrote: >> >> >>> Hi >>> >>> Why not something more generic. >>> Someone could think of a ValueNode. >>> >>> Then it could be use for object, array, any primitive type ... >>> >>> I will take the ValueNode as a non terminal grammar node. >>> So first we could do that: >>> >>> ValueNode->method(); >>> ValueNode::sMethod(); >>> ValueNode[]; >>> foo(ValueNode); >>> echo ValueNode; >>> $e = ValueNode; >>> ... >>> >>> And a ValueNode could be define as: >>> >>> ValueNode : >>> >>> NewStatement >>> | FunctionCall >>> | PrimitiveValue >>> | '(' ValueNode ')' >>> | ...; >>> >>> This would allow all this syntax: >>> >>> (new A())->foo(); >>> foo(new A()); >>> foo->bar()[1]; >>> foo()[5]; >>> >>> and many others. >>> >>> >>> On 06/04/2010 03:19 AM, Kalle Sommer Nielsen wrote: >>> >>> >>>> Hi Tig >>>> >>>> 2010/6/4 Tig<tigger.on@gmail.com>: >>>> >>>> >>>> >>>>> Would be at all possible to implement this kind of shortcut? >>>>> >>>>> >>>>> >>>> Its called array-dereferencing and it was proposed countless times, >>>> including by myself. There is an RFC for this[1] and it was planned on >>>> the old PHP6 todo at the PDT[2]. >>>> >>>> [1] >>>> http://wiki.php.net/rfc/functionarraydereferencing >>>> [2] http://wiki.php.net/summits/pdmnotesmay09#php_6 >>>> (see point #13) >>>> >>>> >>>> >>>> >>> >>> --Mathieu Suen >>> >>> >>> >>> >>> >>> >> Not an expert in this area, but does this mechanism limit you to using >> single dimensional arrays? >> >> >> > > Of course not as soon as you add array access to a ValueNode > > ValueNode > > .. > | ArrayAccess > ...; > > This is very simple and it can refactor greatly the parser. > > -- Mathieu Suen > > > >

« previous php.internals (#48660) next »