Соглашения в Laravel

В первую очередь следуй PSR и принятым соглашениям внутри команды/проекта.
Важно поддерживать единый «code style».

# Functions & Variables

  • camelCase
getPost(), $isActive, $id
GetPost(), $is_active, $ID

# Model

  • Единственное число
  • Существительное
  • PascalCase
  • App\Models
Post, PostComment
Posts, post_comment, Postcomment

# Table

  • Множественное число
  • snake_case

Имя таблицы = имя модели во множественном числе.

Если $table не указано явно в модели, то Laravel автоматически получит имя таблицы.

Даже если явно указывать имя таблицы, то всё равно рекомендуется придерживаться данного соглашения.

posts, post_comments
post, postcomment, PostComments

# Pivot Table

  • Единственное число
  • Имена моделей в алфавитном порядке
  • snake_case
post_user
user_post, posts_users

# Column

  • snake_case
  • Без префикса таблицы
id, full_description, created_at
ID, fulldescr, createdAt

# Primary Key

  • Без префиксов и постфиксов
id
post_id, id_post

# Foreign Key

  • Имя таблицы в единственном числе
  • Постфикс «_id»
user_id, post_id
user, users_id, id_post

# Relationship hasOne

  • camelCase
  • Единственное число
user()
users()

# Relationship hasMany

  • camelCase
  • Множественное число
users()
user()

# Migration

  • snake_case
  • Название описывает действие
В примерах указаны имена без даты, которая добавляется автоматически.
create_posts_table, add_user_id_to_posts_table
posts, fix_table, update_column

# Seeder

  • Единственное число
  • PascalCase
  • Постфикс «Seeder»
  • Database\Seeders
PostSeeder
Post, PostsSeeder

# Route URI

  • Множественное число
  • kebab-case

Обратись к REST Naming Guide за более подробной информацией.

/posts/1, /about-us
/post/1, /aboutUs, /about_us

# Route Name

  • snake_case
  • dot-нотация
posts.index, posts.show, about_us
posts, postsShow, about.us, about-us

# Controller

  • Единственное число
  • PascalCase
  • Постфикс «Controller»
  • App\Http\Controllers
PostController, PostCommentController
PostsController, Post, posts_controller

# Resource Controller / CRUD

    Стандартные CRUD методы: index, create, store, show, edit, update, destroy.

    Обратись к документации за более подробной информацией.

    Также, если необходимо, то ты можешь добавлять свои методы, но чтобы избежать конфликтов, их роуты должны быть определены до ресурсного контроллера.

    # View

    • kebab-case
    • snake_case
    • Без точек в имени

    Нет чёткого стандарта использовать «kebab-case» или «snake_case». Главное используй один вариант во всем проекте.

    Точки используются для разделения директорий, поэтому в имени их быть не должно, кроме расширения .blade.php

    Данное соглашение касается как файлов, так и директорий.

    index, post_comments, post-comments
    Index, postComments

    # Contract / Interface

    • PascalCase
    • Существительное или прилагательное
    • Без префикса и постфикса
    • App\Contracts
    Authenticatable, Dispatcher, ShouldQueue
    Authentication, DispatcherInterface, IShouldQueue

    # Trait

    • PascalCase
    • Прилагательное
    • Без префикса и постфикса
    • App\Traits
    Notifiable, Dispatchable
    Notification, NotifiableTrait, Dispatcher