Laravel ulepsza dopasowywanie wzorców ciągów, dodając obsługę bez uwzględniania wielkości liter do metody Str::is, zapewniając bardziej elastyczne i przyjazne dla użytkownika porównania ciągów z wzorcami wieloznacznymi.
Ulepszona metoda Str::is akceptuje trzeci parametr do dopasowywania bez uwzględniania wielkości liter:
use Illuminate\Support\Str;
// Simple string matching
Str::is('Admin', 'admin', true); // true
// Wildcard pattern matching
Str::is('*.jpg', 'photo.JPG', true); // true
// Prefix matching
Str::is('SKU123*', 'sku12345', true); // true
// Custom patterns
Str::is('prd-001*', 'PRD-001-XYZ', true); // true
// Email matching
Str::is('[email protected]', '[email protected]', true); // true
To ulepszenie okazuje się szczególnie cenne w systemach zarządzania treścią:
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) {
// Match media-specific files (e.g., 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';
}
}
Opcja bez uwzględniania wielkości liter w Str::is tworzy bardziej niezawodne dopasowywanie wzorców, eliminując problemy z rozróżnianiem wielkości liter, dzięki czemu aplikacje są bardziej przyjazne dla użytkownika, zachowując jednocześnie potężną funkcjonalność symboli wieloznacznych.