Терминологический вопрос о «разыменовании»?

В PHP действует следующий код

$a=array(0);$a[0]; 

но это неверно:

 array(0)[0] 
  1. Какова терминология, соответствующая этому поведению? (имеет ли это какое-либо отношение к «разыменованию»?)
  2. Какова мотивация такого поведения (помимо недовольства пользователей: -P)

Я ищу общую терминологию , не обязательно терминологию, связанную с PHP.

(Другой пример: в MATLAB действует следующее:

 s = size(M) s(0) 

но это неверно:

 size(M)(0) 

В PHP и MATLAB добавление скобок не помогает, т. Е. (array(0))[0] и (size(M))(0) оба недопустимы)

Это называется разыменованием Array и станет доступным в PHP 5.4 (который в настоящее время находится в альфа)

Заметьте (спасибо Гордон) : то, что вы просите, с array() 1 , невозможно даже в PHP 5.4, но оно будет работать для функций .

Несколько источников:

  • RFC – разыменование разупорядочения функций
  • Особенности в PHP trunk: разыменование в Array , когда он не знал, будет ли PHP 5.4 или PHP 6
  • И последнее, но не менее важное : (в настоящее время) новости на php.net : PHP 5.4 alpha1 выпущен

Цитируя последние новости:

Вот неполный список изменений:
– Добавлено: построение языка символов
– Добавлено: Поддержка разыменования Array
– Добавлено: поддержка DTrace
– Улучшено: улучшено использование и производительность памяти Zend Engine
– Перемещено: ext / sqlite перемещен в ячейку (поддержка sqlite3 все еще встроена)

1. array() не является функцией, даже если она выглядит как одна – на самом деле PHP называет конструкцию языка; и они не ведут себя как функции.

Это называется «разыменованием массива», и оно будет доступно для использования в PHP5.4.