Laravel Idea
341 subscribers
51 photos
8 videos
1 file
12 links
Download Telegram
Простое следствие предыдущего поста - поскольку всё в кеше, я могу и значения показать при комплишене.
Ровно 3 года назад, 5 декабря 2019, я выпустил Laravel Idea 1.0. За несколько дней до этого один китаец сьел что-то не то и понеслось. А потом еще и война. Почти уверен, что без своего продукта, в который можно всегда окунуться с головой, мне было бы сильно сложнее.

Выпустил сегодня версию 6.2. Фич не так чтобы много. Много усилий ушло на оптимизацию всякую и кеширование. Главная цель - генерить хелпер код автоматом после каждого сохранения php-файла. Для этого оно должно генерить космически быстро. Думаю, будет уже в одной из следующих версий.
Давно хотел сделать продвинутое создание модельки. Чтобы быстро все клавой набивать: написал, таб, выбрал, таб и т.д. Ну и после такого можно сразу и фабрику и реквест создать с полями, как я хотел. Эскиз чуть ли не год назад делал. Наконец начал делать реальный UI.
This media is not supported in your browser
VIEW IN TELEGRAM
Работа идет медленно, но идет. Постоянно на правку других багов и мелкие фичи отвлекаюсь. Небольшая гифка-иллюстрация к предыдущему посту. Красивый и быстрый набор всего клавой.
Генерация контроллера будет умной. Если есть реквест, то он будет использовать его, если нет, то стандартный и валидацию прямо в контроллере сделает. Про ресурсы и полиси - тоже знает. Вот пример двух генераций, со всеми классами и без всего - https://gist.github.com/adelf/8aed89f8aae7284e87f4cf89b856f032
Кому в воскресенье делать нечего кому интересно - пишите критику и пожелания.

P.S. в воскресенье утром решил пост сделать без звукового уведомления)
ChatGpt, видимо, уже считает Laravel Idea частью шторма)
Вчера перед сном смотрел какие есть возможности у плагинов для java-фреймворков(да-да). Увидел, что они подсказывают ключи настройки, основываясь на коде, который эти настройки потом юзает. И буквально за 5 минут сделал такое же для .env ключей. Опять та же мысль - а раньше нельзя было?
Говорят, Laravel Idea 7.0 вышла. С теми самыми фичами: редактором новой модели, с саппортом twig-вьюшек, комплишенами .env ключей и кучей всякой мелочи, о которой, как обычно, знаю только я. Го тестить?)
This media is not supported in your browser
VIEW IN TELEGRAM
Вчера в чатике этого канала один товарищ пожаловался, что ему лень писать $table в конструкции Schema::table(…). Я решил вопрос более радикально и понял, что такие вот мелочи спасают намного больше времени, чем некоторые даже сильно более сложные фичи.

Решил еще добавить комплишенов для методов контроллера(create(), store() с умным вычислением параметров). И для форм реквеста генерить методы типа getName(): string { return $this->input(‘name’); }

У кого еще какие предложения о таких вот комплишенах целых методов? Хочу хоть немного напоминать всякие Копилоты…
This media is not supported in your browser
VIEW IN TELEGRAM
Что скажете? Хочу еще для enum отдельное, для чисел разных(например для правила integer). Может еще для uuid… тут буду рад если подскажет, кто так делает для реквестов - как код должен выглядеть.
Эта последняя фича с методами форм-реквестов показала насколько сильно я отстал от ларковской жизни. Когда я активно писал на ней - это было вполне норм. И генерация таких методов вполне оправдывала бы себя. А сейчас - там есть удобные методы типа ->date() ->enum() и так далее. Актуальность написания своих таких методов близка к нулю. Теперь придется надеяться только на активный фидбек юзеров… 🙁
Зато теперь я знаю какие фичи надо реализовывать) Человек 24 бакса в месяц за это просит! (Петя, включи комментарии в канале. Иногда интересно же пообсуждать)
Новая бизнес-ниша: нейронка по модели SaaS заточенная под генерацию кода Laravel проектов https://smousss.com

На самом деле у них нет никакой своей нейронки, они перенаправляют запросы в OpenAI API с заранее отточенными настройками prompt, результат пишется сразу в PHP файлы на локальной машине пользователя. Удобная обёртка, чтобы не копипастить код туда-сюда вручную в/из ChatGPT.

Пока заготовлены такие сценарии:
- Convert all your tests from PHPUnit to Pest 2
- Create Laravel Nova admin panels at light speed
- Enjoy the convenience of migrations again
- Magically add missing Model Factories
- Make entire Laravel projects translatable

Пример: создание Fillament админки по классу модели
php artisan smousss:filamentize App\\Models\\Post
This media is not supported in your browser
VIEW IN TELEGRAM
Недавно обсуждали как оптимизировать конфигурацию групповых .env-значений. Сделал вот так. Тупо по префиксу. С дефолтными значениями. Что скажете?
Выпустил сегодня релиз с небольшим фиксом и поддержкой пакета роут-атрибутов от Спати. Он позволяет роуты делать в стиле симфони(если не ошибаюсь, я хз, может они там до сих пор на yaml-файлах роуты делают): атрибутами на методах и классах контроллеров.

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

Присобачил роуты-атрибуты туда тоже и очень легко все реализовалось.
This media is not supported in your browser
VIEW IN TELEGRAM
С полисями была проблема, пока нет второго аргумента - непонятно что подсказывать в первом. Вчера засел решать проблему. Буду изо всех сил вытаскивать возможный класс модели и подсказывать нужные полиси к нему. С красивым комплитом переменной или Сontact::class, например.
Laravel Idea-7.1.2.231.zip
8.3 MB
Кроме полной переработки работы с Policies, сделал несколько вещей, обязанных повысить стабильность плагина. Но такие вещи вполне могут и дать обратный эффект - начать генерить эксепшены постоянные) Я у себя посмотрел - вроде все нормально.

Просьба поставить у себя и посмотреть правильно ли работает умная подсказка полисей и нет ли падений(эксепшены вылазят красной штукой справа внизу - там же можно отправить Report - он упадет прямо ко мне - я буду очень рад). Плагин ставится так: качается файл, в шторме в настройках Plugins > колесико > Install from file.
Некоторые уже в курсе, что мы с JetBrains сделали общий bundle, в котором пользователи могут купить шторм вместе с плагином со скидкой. За подробностями сюда.

Картинку взял с корейского обьявления. Там логотип Laravel Idea кажется самым главным)
Jeffrey Way выкладывает на laracasts целый курс про PhpStorm + Laravel Idea. По одному уроку за рабочий день, поэтому я ждал пока выложит последнее, касающееся плагина. Если вдруг кто не видел: https://laracasts.com/series/phpstorm-for-laravel-developers/episodes/1
This media is not supported in your browser
VIEW IN TELEGRAM
Рефакторил весь UI. У меня там минифреймворк образовался над UI-компонентами. И вот я осознал, что упоролся совсем... Но уже поздно. Эти настройки влияют на весь UI Laravel Idea.