Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас

Зміна регістру

camelCase, snake_case, kebab-case і StudlyCase

Дані не залишають ваш браузер

Цей інструмент повністю працює на вашому пристрої: обчислення виконує JavaScript у вкладці. Ми не надсилаємо введений текст на сервер, не зберігаємо і не логуємо його. Можете сміливо працювати з робочими даними - і навіть відключити інтернет після завантаження сторінки.

Поділитись

Навіщо це потрібно

У кожному проєкті співіснує кілька стилів іменування: класи в StudlyCase, методи в camelCase, стовпці бази в snake_case, URL і CSS-класи в kebab-case, константи в CONSTANT_CASE. Перекладати назву з одного в інший доводиться постійно.

Стилі та їхнє місце в PHP і Laravel

Стиль Де використовується
StudlyCase класи, енуми, назви міграцій
camelCase методи, змінні, ключі в JSON API
snake_case стовпці бази, ключі конфігів, ключі перекладів
kebab-case URL, slug, CSS-класи, Blade-компоненти
CONSTANT_CASE константи, змінні оточення

Ця відповідність у Laravel не випадкова - на ній тримаються угоди фреймворку.

Як Laravel сам покладається на регістр

// Модель User -> таблиця users, зовнішній ключ user_id
class User extends Model {}

// Blade-компонент <x-user-card /> -> клас UserCard
// Маршрут users.show -> метод show у UserController
// Аксесори: метод у camelCase -> атрибут у snake_case
protected function fullName(): Attribute
{
    return Attribute::get(fn (): string => "{$this->first} {$this->last}");
}

$user->full_name;   // саме так, не fullName

Саме тому неправильний регістр у назві методу тихо ламає магію: Laravel просто не знайде те, що шукає.

Хелпери Str

Str::camel('user_profile_settings');     // userProfileSettings
Str::studly('user_profile_settings');    // UserProfileSettings
Str::snake('userProfileSettings');       // user_profile_settings
Str::kebab('UserProfileSettings');       // user-profile-settings
Str::headline('user_profile');           // User Profile
// Slug розуміє кирилицю і транслітерує її
Str::slug('Вакансії Laravel у Києві');   // vakansiyi-laravel-u-kiyevi

Str::slug() - окремий випадок: він не просто змінює регістр, а транслітерує, прибирає розділові знаки і робить рядок придатним для URL. Для української це саме те, що потрібно.

Один нюанс з абревіатурами

Перетворення APIResponse у snake_case дає a_p_i_response майже в будь-якій реалізації, включно з Laravel. Тому в назвах класів абревіатури зазвичай пишуть як ApiResponse - тоді все конвертується передбачувано.