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
>
>
>
>

Reply via email to