KRUHLYK 🇺🇦
1.11K subscribers
663 photos
60 videos
5 files
276 links
Download Telegram
#laratip

Custom Validation Rules: від костилів до елегантних рішень

Коли вбудованих required, string або exists стає замало, у нас є два шляхи. Вибір залежить від того, чи збираєтесь ви перевикористовувати цю логіку.

1. Inline-валідація (Closures) Підходить для унікальної логіки "тут і зараз".

Плюс: Швидко, не засмічує структуру проєкту.

Мінус:
Важко тестувати окремо, копіпаст — гріх. У замикання прокидається $fail. Якщо викликали — валідація не пройшла.

2. Rule Objects (Artisan make:rule) Це вже дорослий підхід. Але зверніть увагу: на скрині старий підхід з passes() та message(). У сучасних версіях Laravel ми використовуємо один метод validate(string $attribute, mixed $value, Closure $fail): void.

Senior Tips:

Якщо логіка валідації потребує запитів до БД — виносьте в Rule-клас.

Використовуйте Rule::macro, якщо хочете додати метод у загальний білдер валідатора.

Для складних DTO та Domain-Driven Design валідацію краще тримати ближче до шару Application, а не тільки в Request-класах.

Що по коду на скрині?
Приклад з strtoupper — ок для демо, але в реалі враховуйте локалізацію та мультибайтові рядки (mb_strtoupper).

Валідувати кейс юзернейма — специфічний кейс, зазвичай ми просто робимо $request->merge() або валідуємо через Regex.
👍3🔥3
Media is too big
VIEW IN TELEGRAM
Продовжуємо корисне впровадження АІ
1
Пишіть ваші жарти в коментарях
😁4
This media is not supported in your browser
VIEW IN TELEGRAM
Я пушу не протестований код в пʼятницю.

Девопс, який вночі на чергуванні:
🤣14
Media is too big
VIEW IN TELEGRAM
Ну не деплоїти ж сьогодні, правда?😉💪🏻
4👎1
Ну що, понеділок. Час попрацювати! ☕️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19
І знову робочий день. Тримати стрій!
😁13👍1🕊1👨‍💻1
Скоріше оновлюйте Laravel Boost до версії 2.0. Це зекономить вам купу токенів ваших ШІшок!

ПиСи: всі переходять від глобальних гайдлайнів до опису скілів. І… це реально класно працює 😎
🔥42
Попрацював. Пішов я спати. Тихої ночі, колеги!
5😁5
Перше правило продакшн-клубу: нічого не чіпати в п'ятницю
🤝9
#laratip

Валідація пароля: робимо це правильно в Laravel

Багато хто досі перевіряє поточний пароль вручну в контролері через Hash::check. Я дуже часто це бачу у ваших кодових базах, коли ми працюємо на менторських програмах. Це легасі-підхід, який роздуває код. На скріні — чистий спосіб через Form Request.

Що тут відбувається:

current_password: вбудоване правило Laravel. Воно автоматично звіряє введене значення з хешем пароля автентифікованого користувача. Більше ніяких ручних перевірок.

confirmed: стандарт, що вимагає наявності поля new_password_confirmation. Позбавляє від помилок при вводі нового пароля.

different:current_password: маст-хев для UX та безпеки. Не даємо юзеру змінити пароль на той самий, що вже встановлений.

unique:users,email: перевірка унікальності імейла. Але зверни увагу: якщо це оновлення профілю, тут бракує ігнорування поточного ID користувача, інакше валідація впаде на "email вже зайнятий".

Senior-порада:

Якщо ви використовуєте Clean Architecture або DDD, не затягуйте логіку Hash::make() у валідатор. Валідатор лише перевіряє вхідні дані. Сама ж операція хешування та збереження має жити в Action-класі або Domain Service.

Для проектів з високим навантаженням на БД, правило unique краще доповнити unique:users,email,'.auth()->id(), щоб валідатор знав, що ми оновлюємо саме цей запис.
🔥5👍1👏1
Що ж, понеділок знову увірвався коли його не очікуєш і знову без світла на дового 🙄

І тут нам батя Тейлор анонсував, що нам треба переставати звикати до властивостей в класах Laravel і переповзати на використання атрибутів.
При тому, залишається зворотна сумісність з використанням властивостей.

І знаєте що? Мені таке дуже подобається. На мою скромну думку, код з використанням атрибутів стає більш читабельним та передбачуваним. PHP все біль більше стає дорослою, зрілою мовою з сімейства C.

А якої думки ви з цього питання, пишіть в коментарях! Гарного понеділка та смачної кави!

https://github.com/laravel/framework/pull/58578
👍10🔥2🕊1
Може хтось шукає проєкт чи може порекомендувати?
👍2
Forwarded from houkotosayame
В мене один з ейчарів просить дати рекомендацію на пхп розробника рівня сеньйор, можливо комусь потрібно в чаті
Не святкую. Цейво, степлєр.
🔥93
NativePHP for Mobile став частково безкоштовним.

Це змінює правила гри для PHP-ком'юніті. Якщо раніше це була закрита історія, то тепер Core і критично важливі плагіни перевели під ліцензію MIT. Фактично, поріг входу в мобільну розробку на Laravel знизився до нуля.

Деталі оновлення:

- Essential-плагіни (Free):
У базу включили все необхідне для типової CRUD-апки або клієнтського інтерфейсу: доступ до камери, файлової системи, мікрофону, мережі, системних діалогів та шерингу. Тобто 80% типових задач закриваються безкоштовно.
- Premium-плагіни (One-time purchase):
Специфічні фічі винесли в платний сегмент. Це біометрія (FaceID/TouchID), геолокація, пуш-сповіщення, сканер кодів та Secure Storage. Важливо, що це не підписка, а разова покупка. Для комерційного проєкту — копійки, для пет-проєкту — можна обійтися базою.
- Developer Experience (DX):
Тут найцікавіше — інструмент Jump. Це компаньйон-застосунок, який дозволяє тестувати код на реальному iOS/Android пристрої без необхідності компілювати білди.

Запускаєш php artisan native:jump — і маєш лайв-прев'ю. Ті, хто хоч раз налаштовував оточення для React Native або Flutter, зрозуміють, скільки болю це знімає на старті.

Архітектурно це все ще обгортка, але з такою інтеграцією в екосистему Laravel (Events, Queues, Eloquent) це виглядає як найбільш "нативний" спосіб для PHP-розробника зробити мобільний додаток, не вивчаючи Swift чи Kotlin.
🔥12
З пʼятницею!
😁10👍4🍾1
Коли замовник хоче AI-агента навіть у лендос для продажу шкарпеток...

В часи, коли бізнес вимагає впихнути "штучний інтелект" у кожну дірку (і бажано "на вчора"), ми отримали справжній рятівний круг.

Вийшла бета Laravel AI SDK! І це саме той інструмент, який перетворює хаос інтеграцій на елегантний код.

Замість того, щоб писати милиці під кожен API і винаходити велосипед щоразу, коли клієнт змінює думку щодо провайдера, ловіть офіційний пакет.

Що під капотом?

Агенти із суперздібностями.
Створюй агентів, які мають доступ до інструментів (tools), пам'яті та вміють віддавати структуровані дані. Все це зі стрімінгом і вбудованими моками для тестів (тестування AI — це окремий біль, але тут про нас подбали).

Один інтерфейс — всі провайдери
Anthropic, Gemini, OpenAI, ElevenLabs... Треба змінити модель? Це один рядок коду. А розумні фоллбеки (fallbacks) підстрахують, якщо API умовного OpenAI вирішить прилягти відпочити.

Нативно для Laravel
Фасади, черги, конфіги, Artisan-команди. Ніяких чужорідних абстракцій — все в стилі фреймворку. Працювати з цим — одне задоволення.

All-inclusive
Це не просто "чат-бот". Це текст, генерація зображень, аудіо, транскрипція, ембеддінги, реранкінг, векторні сховища і навіть веб-пошук.

Дока тут: https://laravel.com/docs/12.x/ai-sdk

Словом, мастхев. Час пиляти своїх агентів правильно, а не на колінці.
🔥11