Laravel вдосконалює пошук за шаблоном у рядках, додаючи можливість нечутливого до регістру порівняння в методі Str::is, що робить порівняння рядків більш гнучким і зручним з використанням шаблонів.
Покращений метод Str::is приймає третій параметр для нечутливого до регістру порівняння:
use Illuminate\Support\Str;
// Просте порівняння рядків
Str::is('Admin', 'admin', true); // true
// Порівняння з шаблоном
Str::is('*.jpg', 'photo.JPG', true); // true
// Порівняння за префіксом
Str::is('SKU123*', 'sku12345', true); // true
// Користувацькі шаблони
Str::is('prd-001*', 'PRD-001-XYZ', true); // true
// Порівняння електронних адрес
Str::is('JOHN.DOE@example.com', 'john.doe@example.com', true); // true
Ця можливість є особливо цінною для систем управління контентом:
class AssetManager
{
protected array $imageFormats = ['jpg', 'png', 'gif', 'webp'];
public function validateAsset(string $filename)
{
foreach ($this->imageFormats as $format) {
if (Str::is("*.{$format}", $filename, true)) {
return true;
}
}
return false;
}
public function processMediaUploads(array $files)
{
return collect($files)->filter(function ($file) {
// Пошук медіа-файлів (наприклад, MEDIA-*.*)
return Str::is("MEDIA-*.*", $file, true);
});
}
public function categorizeAsset(string $filename)
{
$categories = [
'thumbnail' => 'THUMB-*.*',
'banner' => 'BNR-*.*',
'logo' => 'LOGO-*.*'
];
foreach ($categories as $type => $pattern) {
if (Str::is($pattern, $filename, true)) {
return $type;
}
}
return 'general';
}
}
Опція нечутливого до регістру порівняння в Str::is забезпечує більш надійне співпадіння шаблонів, усуваючи проблеми з чутливістю до регістру, що робить програми дружніми до користувача, зберігаючи при цьому потужну функціональність шаблонів