Laravel ежедневно используют тысячи разработчиков для создания всевозможных веб-сайтов и приложений. И, хорошо, что есть соглашения об именах, которым они следуют при создании своих переменных, методов и функций в Laravel. Я расскажу вам об этом подробно.
Названия Контроллеров
Контроллеры должны быть строго в единственном числе, без пробелов между словами и заканчиваться на «Controller».
Кроме того, каждое слово должно быть написано с большой буквы (т.е. BlogController, а не blogcontroller).
Например: BlogController, AuthController, UserController.
Плохие примеры: UsersController (множественное число), Users (отсутствует суффикс «Controller»).
Названия таблиц БД
Таблицы должны быть в нижнем регистре, с подчеркиванием для разделения слов (snake_case) и во множественном числе.
Например: posts, project_tasks, uploaded_images.
Плохие примеры: all_posts, Posts, post, blogPosts
Сводные таблицы
Все сводные таблицы должны быть в нижнем регистре, каждая модель в алфавитном порядке, разделенные подчеркиванием (snake_case).
Например: post_user, task_user и т.д.
Плохие примеры: users_posts, UsersPosts.
Названия столбцов таблицы
Имена столбцов должны быть в нижнем регистре, и в snake_case (подчеркивание между словами). Вы не должны ссылаться на имя таблицы.
Например: post_body, id, created_at.
Плохие примеры: blog_post_created_at, forum_thread_title, threadTitle.
Первичный Ключ (Primary Key)
Обычно это должен быть id.
Внешние ключи (Foreign Keys)
Внешними ключами должно быть имя модели (в единственном числе), к которому добавляется ‘_id’ (при условии, что первичный ключ в другой таблице это ‘id’).
Например: comment_id, user_id.
Переменные
Обычные переменные обычно должны быть в «верблюжьемРегистре» (camelCase) с первым символом в нижнем регистре.
Например: $users = …, $bannedUsers = …
Плохие примеры: $all_banned_users = … , $Users=…
Если переменная содержит массив или коллекцию из нескольких элементов, то имя переменной должно быть во множественном числе. В противном случае оно должно быть в единственном числе.
Например: $users = User::all(); (поскольку это будет коллекция из нескольких объектов User) и $user = User::first() (так как это всего лишь один объект)
Соглашения об именах для моделей
Названия моделей в Laravel
Модель должна быть в единственном числе, без пробелов между словами и с заглавной буквы.
Например: User (\App\User или \App\Models\User и т.д.), ForumThread, Comment.
Плохие примеры: Users, ForumPosts, blogpost, blog_post, Blog_posts.
Как правило, ваши модели должны иметь возможность автоматически определять, какую таблицу БД им следует использовать следующим методом:
/** * Get the table associated with the model. * * @return string */ public function getTable() { if (! isset($this->table)) { return str_replace( '\\', '', Str::snake(Str::plural(class_basename($this))) ); } return $this->table; }
Но, конечно, вы можете просто указать $this->table в вашей модели. См. ниже раздел о названиях таблиц.
Я рекомендую вам создавать модели и миграции одновременно, запуская
php artisan make:model -m ForumPost
Это автоматически сгенерирует файл миграции (в данном случае для таблицы «forum_posts»).
Свойства модели
Должны быть строчные буквы, в snake_case. Они также должны следовать тем же соглашениям, что и имена столбцов таблицы.
Например: $this->updated_at, $this->title.
Плохие примеры: $this->UpdatedAt, $this->blogTitle.
Методы Модели
Методы в ваших моделях, как и все остальные методы в ваших проектах на Laravel, должны быть в camelCase, первый символ должен быть в нижнем регистре.
Например: public function get(), public function getAll().
Плохие примеры: public function GetPosts(), public function get_posts().
Отношения
Отношения hasOne or belongsTo (один ко многим)
Они должны иметь форму единственного числа и следовать тем же соглашениям об именах, что и у методов обычной модели (camelCase, с первой буквой в нижнем регистре).
Например: public function postAuthor(), public function phone().
Отношения hasMany, belongsToMany, hasManyThrough (один ко многим)
Должны быть такими же, как и другие Один ко многим, но во множественном числе.
Например: public function comments(), public function roles().
Полиморфные отношения
Возможно, получить правильное название будет несколько неудобно.
В идеале вы хотите иметь такой метод:
public function category() { return $this->morphMany('App\Category', 'categoryable'); }
И Laravel по дефолту будет предполагать, что есть categoryable_id и categoryable_type.
Но вы можете использовать другие необязательные параметры для morphMany, чтобы поменять дефолтные значения
public function morphMany($related, $name, $type = null, $id = null, $localKey = null)
Контроллеры
Методы в контроллерах
Они должны следовать тем же правилам, что и методы модели. Т.е. camelCase (первая строчная буква).
Кроме того, для обычных операций CRUD они должны использовать одно из следующих названий методов.
МЕТОД | ССЫЛКА | НАЗВАНИЕ МЕТОДА | НАЗВАНИЕ МАРШРУТА |
---|---|---|---|
GET | /photos |
index() |
photos.index |
GET | /photos/create |
create() |
photos.create |
POST | /photos |
store() |
photos.store |
GET | /photos/{photo} |
show() |
photos.show |
GET | /photos/{photo}/edit |
edit() |
photos.edit |
PUT/PATCH | /photos/{photo} |
update() |
photos.update |
DELETE | /photos/{photo} |
destroy() |
photos.destroy |
Трейты (Traits)
Должны быть прилагательными.
Например: Notifiable, Dispatchable и т.д.
Шаблоны Blade
Должны быть в нижнем регистре, snake_case (подчеркивание между словами).
Например: all.blade.php , all_posts.blade.php и т.д.
Автор: webdevetc
Перевод: Алексей Широков
Оригинал «Соглашения об именах в Laravel» от Алексея Мезенина
Наш Телеграм-канал — следите за новостями о Laravel.