Size: a a a

🐘PHPStorm TIPS & TRICKS

2020 July 01

S

Smog in 🐘PHPStorm TIPS & TRICKS
Спасибо, что ответили. По поводу добавления как фреймворк очень удобно. В чатике по битриксу сказали что нормальная проблема с 2020, и что в 2020.2 это вроде пофиксили и посоветовели поставить eap.
источник

A

Alexander in 🐘PHPStorm TIPS & TRICKS
На счёт удобности, я не буду комментировать, чтобы никого не обидеть)
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Привет!
Есть строка вида
mixed|null|Namespaced\TestClass|\NameSpaced\Class|iterable<TestClass>|TestClass[]|iterable<iterable<TestClass>>|string

Нужно заменить в ней короткие наименования классов на полные.
Мапа "алиас => полное название" имеется.
Первое, что пришло на ум - заюзать регулярки
 $types = preg_replace_callback(
           "/(\\?[a-zA-Z]+_*\\?)+/i",
           function($match) use ($classMap) {
               return $classMap[$match[0]];
           },
           $types
       );

Но это не работает, хотя регулярка вроде как хорошо вычисляет вхождения на regex101.
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Строка на скрине разбита на массив по |*
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
А что если разбить этот массив по <,>,[,] и выполнить замену по полному соответствию из $classMap и склеить обратно... наверное, сработает
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
amorphine
А что если разбить этот массив по <,>,[,] и выполнить замену по полному соответствию из $classMap и склеить обратно... наверное, сработает
А если так

/(?P<full_class_name>(?P<namespace>\\?(?:[A-Z][A-Za-z0-9_]*\\)*)(?P<classname>[A-Z][A-Za-z0-9_]*))/
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Станислав Квятковский
А если так

/(?P<full_class_name>(?P<namespace>\\?(?:[A-Z][A-Za-z0-9_]*\\)*)(?P<classname>[A-Z][A-Za-z0-9_]*))/
Выглядит очень изящно, спасибо. Но что-то страшновато использовать регулярки уже.
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
amorphine
Выглядит очень изящно, спасибо. Но что-то страшновато использовать регулярки уже.
Она тяжеловатая для вычисления, конечно. Если тебе не нужны группы namespace и classname, то разименуй группы (?P<...> на ?:), так регулярка хорошенько облегчится
источник

TC

Tony Coiͪ̓n in 🐘PHPStorm TIPS & TRICKS
Alexander
Что уже Битрикс так распух, что навигация у IDE не справляется? Да. Ядро облегченное нужно
однажды меня попросили сделать правки в крупном русском магазе на битриксе
источник

TC

Tony Coiͪ̓n in 🐘PHPStorm TIPS & TRICKS
и скинули мне файлики без статики)
источник

TC

Tony Coiͪ̓n in 🐘PHPStorm TIPS & TRICKS
2 гига пхп+жс+цсс
источник

TC

Tony Coiͪ̓n in 🐘PHPStorm TIPS & TRICKS
я так никогда не ахуевал
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
Tony Coiͪ̓n
2 гига пхп+жс+цсс
GitFS по битриксу плачет)
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
делаю DTO-шку на стероидах, которая в конструкторе принимает массив и по doc-комментам сможет делать базовые преобразования для скалярных значений и рекурсивно создавать другие DTO-шки.
Все было хорошо, когда коммент мог выглядеть так:
**/ @var Long\Namespaced\DTO */
public $field;

Потом сделал в IDE cleanup и он полный путь унес в use-секцию. Тесты провалились, естественно, на уровне обработки доков ничего не известно о классах из их коротких имен. Пришлось городить резолвер, который анализирует исходный код (токены) и дает карту импортов для файла, где объявлен класс. Вот и приходится через такую городушку заменять короткие имена на длинные.
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
php7.4, казалось бы, привносит декларацию типов для переменных, но в языке нет параметризации (можно объявить тип поля, но нельзя объявить типом параметризованный массив), в и тоге от доки не отказаться никогда, походу даже в php8
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
amorphine
php7.4, казалось бы, привносит декларацию типов для переменных, но в языке нет параметризации (можно объявить тип поля, но нельзя объявить типом параметризованный массив), в и тоге от доки не отказаться никогда, походу даже в php8
Возможно, в какой-то из подверсий PHP 8 добавят дженерики. Добавление в нулевой минорной типа mixed и возможности перечислять типы позволит делать костыли на базовые типы типа Map => Map<string|int, mixed>
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Станислав Квятковский
Возможно, в какой-то из подверсий PHP 8 добавят дженерики. Добавление в нулевой минорной типа mixed и возможности перечислять типы позволит делать костыли на базовые типы типа Map => Map<string|int, mixed>
Скорее всего, к концу 8й ветки. Как и с php 7.4
источник

СК

Станислав Квятковски... in 🐘PHPStorm TIPS & TRICKS
Это какая-то шутка для Google?)
Я ещё не успел читнуть по HTTP/2 литературу, а они уже HTTP/3 выкатили в релизный браузер
источник

a

amorphine in 🐘PHPStorm TIPS & TRICKS
Тоже об этом подумал
источник

A

Aleksandr baltazor in 🐘PHPStorm TIPS & TRICKS
Хотят запихать все в юдп
источник