#laratip
Custom Validation Rules: від костилів до елегантних рішень
Коли вбудованих
1. Inline-валідація (Closures) Підходить для унікальної логіки "тут і зараз".
Плюс: Швидко, не засмічує структуру проєкту.
Мінус: Важко тестувати окремо, копіпаст — гріх. У замикання прокидається
2. Rule Objects (Artisan make:rule) Це вже дорослий підхід. Але зверніть увагу: на скрині старий підхід з
Senior Tips:
Якщо логіка валідації потребує запитів до БД — виносьте в Rule-клас.
Використовуйте
Для складних DTO та Domain-Driven Design валідацію краще тримати ближче до шару Application, а не тільки в Request-класах.
Що по коду на скрині?
Приклад з
Валідувати кейс юзернейма — специфічний кейс, зазвичай ми просто робимо
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
This media is not supported in your browser
VIEW IN TELEGRAM
Я пушу не протестований код в пʼятницю.
Девопс, який вночі на чергуванні:
Девопс, який вночі на чергуванні:
🤣14
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19
#laratip
Валідація пароля: робимо це правильно в Laravel
Багато хто досі перевіряє поточний пароль вручну в контролері через
Що тут відбувається:
Senior-порада:
Якщо ви використовуєте Clean Architecture або DDD, не затягуйте логіку
Для проектів з високим навантаженням на БД, правило
Валідація пароля: робимо це правильно в 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
І тут нам батя Тейлор анонсував, що нам треба переставати звикати до властивостей в класах Laravel і переповзати на використання атрибутів.
При тому, залишається зворотна сумісність з використанням властивостей.
І знаєте що? Мені таке дуже подобається. На мою скромну думку, код з використанням атрибутів стає більш читабельним та передбачуваним. PHP все біль більше стає дорослою, зрілою мовою з сімейства C.
А якої думки ви з цього питання, пишіть в коментарях! Гарного понеділка та смачної кави!
https://github.com/laravel/framework/pull/58578
👍10🔥2🕊1
Forwarded from houkotosayame
В мене один з ейчарів просить дати рекомендацію на пхп розробника рівня сеньйор, можливо комусь потрібно в чаті
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 пристрої без необхідності компілювати білди.
Запускаєш
Архітектурно це все ще обгортка, але з такою інтеграцією в екосистему Laravel (Events, Queues, Eloquent) це виглядає як найбільш "нативний" спосіб для PHP-розробника зробити мобільний додаток, не вивчаючи Swift чи Kotlin.
Це змінює правила гри для 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
KRUHLYK 🇺🇦
Що ж, понеділок знову увірвався коли його не очікуєш і знову без світла на дового 🙄 І тут нам батя Тейлор анонсував, що нам треба переставати звикати до властивостей в класах Laravel і переповзати на використання атрибутів. При тому, залишається зворотна…
Десь так очікуємо в Laravel 13. Огляд, як завжди, на каналі після релізу.
👍6
Коли замовник хоче 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
Словом, мастхев. Час пиляти своїх агентів правильно, а не на колінці.
В часи, коли бізнес вимагає впихнути "штучний інтелект" у кожну дірку (і бажано "на вчора"), ми отримали справжній рятівний круг.
Вийшла бета 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
Словом, мастхев. Час пиляти своїх агентів правильно, а не на колінці.
Laravel
Laravel AI SDK | Laravel 13.x - The clean stack for Artisans and agents
Laravel is a PHP web application framework with expressive, elegant syntax. We've already laid the foundation — freeing you to create without sweating the small things.
🔥11