LINUX.ORG.RU

Синтаксис PHP - двоеточие как запись ключ-значение?

 


0

1

Давненько я не занимался вебом, решил посмотреть что к чему сейчас в PHP. И вижу такую запись (примеры из Laravel):

return view(view: "pages");

Полез смотреть что сие означает. Вот, например, такая статья:

Синтаксис PHP 5.3, 5.4, 5.5, 5.6, 7 — что нового?

Ничего про такое использование двоеточия не сказано.

Вопрос: что этот синтаксис значит, где про это можно прочитать?

★★★★★

Разобрался. Это, оказывается, фича PHPStorm. Он в исходный текст вставляет такие надписи, чтобы тип был виден, то есть строка «view:» - это такое виртуальное добавление о PhpStorm. Когда на видео смотришь, вообще непонятно, что это не чистая строка исходника, а вот так вот искаженная в IDE.

Я уж все спецификации перечитал, так и не нашел что бы это значило, а оно вона как.

Xintrea ★★★★★ ()
Ответ на: комментарий от Noob_Linux

Документацию к чему? Хорошо что кодеры PHPStorm занимаются только им. А если бы подобные им писали бы Xserver и дрова для видеокарты? Тогда документацию к чему надо бы было смотреть? Хрен его знает какой придурок решил показать тебе вместо исходника какое-то собственное наркоманское виденье мира.

Suntechnic ★★★★★ ()
Ответ на: комментарий от goingUp

Это никак не отменяет того что они поехавшие. В нормальных редакторах это показывается во всплывающих подсказках при наведении например или когда текстовый курсор в позиции ввода параметра.

Suntechnic ★★★★★ ()
Ответ на: комментарий от goingUp

Ну написал ты вот так:

Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello world!");
            }
        });

А идея тебе показывает вот так:

Thread t = new Thread(() -> {
                System.out.println("Hello world!");
            }
        });

hippi90 ★★★★ ()
Ответ на: комментарий от goingUp

Вопросов нет - удобнее. Удобнее так же ехать по навигатору - там и освещенность всегда хорошая, и вид более полный, и обзор никто не загораживает и тоже отключаемо, но что-то автомобилей с за крашеной лобовухой я не вижу на дорогах.

Мое мнение - код должен выглядеть так как он введен. Хочешь показывать - показывай во всплываха, сделай панель рядом с кодом и показывай в ней напротив строки, но мне кажется что вносить искажение в отображение текст это абсолютное зло. В крайнем случае оно могло быть ВКЛЮЧАЕМОЙ фичей, но не отключаемой.

Suntechnic ★★★★★ ()
Ответ на: комментарий от no-such-file

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

оно не вставляет ничего в исходный код, это видно только в IDE, причем явно понятно, что это хинт, а не кусок кода

SevikL ★★★★★ ()
Ответ на: комментарий от goingUp

$table->unique(/*$columns*/ 'key', /*$name*/ 'uniq')

Но это в любом случае зашквар. Всплывашки и пхпдок на что?

А если хочется защищаться от ошибок, то заходить надо с другой стороны:

$table->unique(array $params)

или вообще:

$table->unique(\TableUniqueMethodParams $params)

И ещё до передачи в метод, жёстко валидировать процесс формирования массива/объекта параметров.

Пыхер грязи то найдёт, особенно с IDE.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

$table->unique(/*$columns*/ 'key', /*$name*/ 'uniq')

ide лучше, можно выключить, можно настроить, меньше писать

$table->unique(array $params)

там два параметра, из пушки по воробьям. Да и хеш массивы вместо любых параметров функций даже для скриптоты излишний оверхед.

$table->unique(\TableUniqueMethodParams $params)

а это ракетой по воробьям

goingUp ★★★★★ ()
Ответ на: комментарий от deep-purple

вим тут при том, василий, что все фломастеры на вкус разные. и критиковать тот, который ты не только не жрамши, но и в глаза не видел - так себе затея.

SevikL ★★★★★ ()
Ответ на: комментарий от deep-purple

а. ну тогда понятно. ну насрать на твою критику так-то. еще раз поясню, вдруг кто-то деревянный: эта штука не модифицирует код, и хуесосить её - то же самое, что хуесосить подсветку кода.

SevikL ★★★★★ ()
Ответ на: комментарий от SevikL

Всплывашка и автокоплит тоже не модифицируют. А если ты хочешь поделиться этой фичей с другими — сиди пиши пхпдок.

У вас тут что-то «вендорлоком» завоняло. Пойду я отседова. Чмоки всем в этом чятике!

deep-purple ★★★★★ ()
Ответ на: комментарий от SevikL

в идее также

Так storm это и есть идея, вид сбоку. Т.е. это только JetBrains так выёживаются.

оно не вставляет ничего в исходный код

Ясное дело, что не вставляет.

что это хинт, а не кусок кода

Можно было это не так вырвиглазно и неожиданно сделать. Например показывать просто плашку перед именем, типа

return update( [columns] 'key', [name] 'uniq' );
Нафиг это было делать похожим на код?

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от Noob_Linux

Ну я согласен, что видосики это худшее что можно придумать, но не понимаю за каким чертом редактор от которого нужно еще документацию читать. Редактор/IDE такая хрень которая должна быть понятна сразу и интуитивно. В доки можно лезть лишь за допфичами, причем оч. специфичными.

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

за каким чертом редактор от которого нужно еще документацию читать

я сейчас не про документацию «редактора»

Редактор/IDE такая хрень которая должна быть понятна сразу и интуитивно

данное выражение не может быть истинно если мы говорим про любой профессиональный инструмент инженерной специальности. И вы путаете «привычно» и «интуитивно». Если работать в jetBrain IDE это очень интуитивная хрень - мне даже привыкать не пришлось, сразу было очень удобно.

А фича мега удобная и наглядная. И я полностью понимаю полное не понимание людей которые видят это в первые. что бы понять удобство надо попробовать сначала. И она не в тупую всё подряд подсвечивает, а только то что действительно нужно + настриваема в том плане что можно для определенных функций отключить принудительно.

Банальный пример https://i.imgur.com/hfcmlkH.png - наглядно удобно и сразу всё видно (третий параметр не подсвечен т.к. очевидно это было бы излишне).

Noob_Linux ★★★ ()
Последнее исправление: Noob_Linux (всего исправлений: 2)
Ответ на: комментарий от Noob_Linux

Уговорил - как нибудь попробую. Но пока останавливает то что оно не умеет редактировать файлы по сети - я пользуюсь этим непрерывно. Если вдруг научилось недавно и я этого просто еще не знаю - дай знать.

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

Редактировать «по сети» (не дай бог вести разработку) это почти всегда странное занятие но выкачать и удобно работать с удалённым проектом можно. Некоторые коллеги писаются от данного функционала, но я никогда его не использовал.

Noob_Linux ★★★ ()
Ответ на: комментарий от Noob_Linux

Редактировать «по сети» (не дай бог вести разработку)

Я так и делаю последние 8 лет. Иногда даже на боевом. Прикинь.

Если я начну выкачивать на диск все проекты с которыми я работаю, мне за собой тележку с HDD придется таскать, я уже не говорю про то что они работают все часто в очень разном окружении, так что выкачивать надо не проекты удаленные, а прямо виртуалки. Накладных расходов на выкачивание, разворачивание, деплой, бывает сильно больше чем на работу.

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

Сочувствую :) Но я даже не могу представить сколько у вас там проектов и почему они (их кодовая база) так много весит что вам целая куча хардов нужна :) У меня в текущий момент на рабочей машинке 93 проекта и мне как то хватает SSD на 240 гб :)

Ну и как бы если прямо надо редактировать как деды в 2007ом через FTP/SSH на живом серваке то собственно чем плохо использовать это https://i.imgur.com/MCtXMhp.png в жизни не поверю что кодовая база больше чем несколько сотен мегабайт на проект и даже если есть примеры то как бы они единичны же - хотя это мой маня мирок :)

Noob_Linux ★★★ ()
Последнее исправление: Noob_Linux (всего исправлений: 1)
Ответ на: комментарий от Noob_Linux

А не всегда ты можешь обойтись одной кодовой базой. Что-нибудь например что синхронизирует фотографии для 9000 объектов ежедневно. При этом у каждого объекта не меньше 20 фото, а есть такие где под сотню. И фотки в огромном разрешении, и вся эта хрень обновляется постоянно и вот это надо обслуживать и дорабатывать. Ты не можешь работать только с кодовой базой в этом случае, потому что тебе важно и то закачиваются ли файлы, как они ресайзятся и где еще идет обработка какая-то.

Вобщем есть случай когда данные тебе тоже нужны. Я не говорю что их невозможно отделить - возможно, только трудоемкость на порядок возрастет.

Ну и как бы если прямо надо редактировать как деды в 2007ом через FTP/SSH на живом серваке то собственно чем плохо использовать это https://i.imgur.com/MCtXMhp.png

А что это собственно?

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

Вобщем есть случай когда данные тебе тоже нужны.

всегда можно создать фикстуры на которых и прогонять тесты локально потому что вам не нужны все эти 9000 объектов и их фотки, выше крыши будет и пара десятков а то и меньше. Вы можете и должны работать только с кодовой базой, не вижу ни одной необходимоcти залазить на прод кроме как глянуть на логи, править на живую там точно ничего не надо. Править я в любом случае буду локально, прогоню тесты и «запушу» после чего это выкатится на прод одной командой/хуком.

А что это собственно?

окно создания нового проекта из уже существующих файлов, выбран пункт позволяющий работать с удалённым проектом по FTP/еtc

Noob_Linux ★★★ ()
Ответ на: комментарий от Noob_Linux

всегда можно создать фикстуры на которых и прогонять тесты локально

Да, если есть бюджет. И если источник данных не собран из говна и палок и там каждый новы объект может стать сюрпризом, а формат импорта меняется еженедельно (я не шучу).

Suntechnic ★★★★★ ()
Ответ на: комментарий от Suntechnic

Документацию к чему? Хорошо что кодеры PHPStorm занимаются только им. А если бы подобные им писали бы Xserver и дрова для видеокарты? Тогда документацию к чему надо бы было смотреть? Хрен его знает какой придурок решил показать тебе вместо исходника какое-то собственное наркоманское виденье мира.

Тихо-тихо, это не кодеры PHPStorm поехавшие, а топикстартер глаза потерял. Ничего они не вставляют, просто перед фактическим параметром отображается название имени параметра формального в вызываемой функции в случаях, когда это может быть полезным (ну это всё, настраивается, понятное дело). Ну и отображается оно так, что спутать его с реальным кодом - нужно зрение минус десять иметь.

Deleted ()