array dereferencing

Absinthe

жожо
https://wiki.php.net/rfc/functionarraydereferencing

Вопрос: можо ссылку на документацию по синтаксису, согласно которой оно ранее не должно было работать?
Я просто считал, что это баг всегда в PHP такой был, а это оказывается судя по релизу "фича".
 

tony2001

TeaM PHPClub
ссылку на документацию, где описана фича, которая отсутствует?
да вы, батенька, затейник.
 

Absinthe

жожо
tony2001 ссылку на документацию, по которой конструкция somefunc()[0] должна выдавать ошибку, а не правильно работать.
Потому что синтаксически все верно.
 

Absinthe

жожо
Синтаксически неверно.
Почему, спрашиваю, это неверно? Нигде не написано, что неверно.

И синтаксису не противоречит тоже: я могу вернуть ведь массив в функции: http://www.php.net/manual/en/functions.returning-values.php
Следовательно выражение somefunc() имеет тип array().
Что видно по var_dump().
 

Вурдалак

Продвинутый новичок
Список того, что неверно, бесконечен, поэтому описывают только то, что верно. А проверить легко: запусти.

Из того, что вот за выражением «переменная» могут следовать квадратные скобки, не следует, что за выражением «вызов функции» могут быть квадратные скобки.
 

Absinthe

жожо
поэтому описывают только то, что верно.
Мои действия подходят под верные.

А проверить легко: запусти.
Вот тут противоречие: не могу взять у данного массива элемент. Баг!

Из того, что вот за выражением «переменная» могут следовать квадратные скобки, не следует, что за выражением «вызов функции» могут быть квадратные скобки.
Там не было про переменные, там было про массив. somefunction() массив.
 

tz-lom

Продвинутый новичок
PHP выполняется не через сворачивающееся дерево инструкций, а через заранее подготовленный байткод, на этапе подготовки "func()[1]" выглядит как "вызвать функцию взять значение из массива" , на что резонно замечалось что слева собственно не переменная и выкидывалась ошибка
 
  • Like
Реакции: craz

tony2001

TeaM PHPClub
довольно странно говорить о "синтаксической верности" при том, что сам синтаксис меняется.
ранее было неверно, теперь верно.
что тут удивительного?
есть масса синтаксических конструкций, которые в других языках считаются верными, все они естественно не описаны в мануале.
 
  • Like
Реакции: craz

Вурдалак

Продвинутый новичок
Absinthe, на этапе перевода PHP-кода в байт-код неизвестно что может возвращать somefunction(). О том, что это массив ты узнаешь во время выполнения этого байт-кода. PHP просто переводит эти инструкции в байт-код, у него тупо нет правила, что за выражением «вызов функции» могут быть квадратные скобки, я уже это говорил. Теперь просто подумай над этим, а не продолжай как дятел говорить, что
Мои действия подходят под верные.
 

Absinthe

жожо
Вурдалак я не вижу проблемы вызвать инструкцию взятия индекса над неизвестным объектом и только в случае ошибки выдавать ошибку. Потому что в других местах PHP так и делает.
Тут не может быть нерешаемых проблем, потому что в руби, питоне и JS их нет.
 

tz-lom

Продвинутый новичок
дык они их решили, но сейчас - в 5.4 работает
а тогда - не смогли , и чо?
если бы потрудился посмотреть что да как,там синтаксис не такой простой как тебе кажется, см rfc
а вообще мутные у тебя какие то претензии - мол почему раньше так не работало а в скале об этом заметки не высечено - не работало и всё,работай с тем что есть
 

tony2001

TeaM PHPClub
ну, раз это уже сделали, то очевидно, что это возможно сделать.
а почему раньше не сделали просто объяснить - из тех людей, кто может это сделать, никому раньше это было не нужно/не интересно.
это open source, новые вещи здесь появляются именно таким образом - если они кому-то интерсны и/или нужны, а не потому, что некий юзер считает, что так должно быть.
 
Сверху