Laravel представляє новий об'єкт правил Email, який перетворює валідацію електронних листів з простих текстових правил на інтуїтивно зрозумілий і розширювальний інтерфейс. Це покращення дозволяє точно контролювати вимоги до валідації електронних адрес, роблячи код більш читабельним і легким для підтримки.
Валідація електронних адрес часто вимагає різних рівнів строгості - від простого перевірки формату до глибокої перевірки DNS і запобігання спуфінгу. Новий об'єкт правил Email спрощує цю складність завдяки інтуїтивному інтерфейсу:
use Illuminate\Validation\Rule;
$request->validate([
'email' => ['required', 'string', Rule::email()->strict()->dns()]
]);
Цей підхід є особливо корисним при реалізації правил валідації, адаптованих до різних категорій користувачів:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Email::macro('contractor', function () {
return Email::default()
->strict()
->dns()
->rules('ends_with:@contractors.org,@freelance.net');
});
Email::macro('customer', function () {
return Email::strictSecurity()
->rules('not_ends_with:@spam-domains.com');
});
Email::macro('partner', function () {
return Email::default()
->dns()
->spoof()
->filter()
->rules('ends_with:@trusted-partners.biz');
});
}
}
class UserController extends Controller
{
public function create(Request $request)
{
$request->validate([
'personal_email' => ['required', Rule::email()->strict()],
'business_email' => ['required', Email::contractor()],
'contact_email' => ['required', Email::partner()]
]);
// Логіка створення користувача
}
}
Об'єкт правил Email має численні переваги у порівнянні з традиційною валідацією на основі масивів. Він створює інтуїтивний інтерфейс для комбінування вимог валідації, покращує читабельність коду та підтримує розширення через макроси. Ця гнучкість особливо корисна для управління різноманітними потребами валідації електронних адрес у вашому додатку