Sorry for the ambiguity in my original message, and thanks to Tig for PM-ing me about that.
To clarify, I support the syntax for: > echo function(var)[0]; and I believe this syntax: > $tmp = getimagesize('./path/to/image'); > echo $tmp[1]; to be awkward and inconvenient. Furthermore, it feels like an unrefined edge in the PHP syntax because in this case $tmp is a completely throwaway variable. While coding I had always wished PHP could have "echo function(var)[0]" and would like to help make this possible. Are there any good reasons currently why the RFCs for this aren't getting accepted? - Harrison On Sat, Jun 5, 2010 at 6:47 PM, Harrison Yuan <newrevoluti...@gmail.com> wrote: > > 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.s...@easyflirt.com> > wrote: >> >> On 06/04/2010 10:00 AM, Richard Quadling wrote: >>> >>> On 4 June 2010 08:18, mathieu.suen<mathieu.s...@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...@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 >> >> >> > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php