Эта статья - попытка собрать в одном месте все существующие на данный момент соглашения об именовании, гласно или негласно принятые сообществом Laravel. Я решил собрать всю информацию в виде удобной таблицы, актуальную версию которой вы всегда сможете найти здесь.
Что |
Правило |
Принято |
Не принято |
Контроллер |
ед. ч. |
ArticleController |
ArticlesController |
Маршруты |
мн. ч. |
articles/1 |
article/1 |
Имена маршрутов |
snake_case |
users.show_active |
users.show-active, show-active-users |
Модель |
ед. ч. |
User |
Users |
Отношения hasOne и belongsTo |
ед. ч. |
articleComment |
articleComments, article_comment |
Все остальные отношения |
мн. ч. |
articleComments |
articleComment, article_comments | …
Небольшое вступление
В мире Laravel существует очень серьезная, на мой взгляд, проблема. Laracasts, книги, видео туториалы, статьи и даже документация показывают нам использование плохих практик. Понятно, что делается это для популяризации фреймворка, снижая порог вхождения для новичков. Действительно, благодаря такому подходу, человек может написать работающее веб приложение при минимальных усилиях. И это хорошо. Плохо то, что разработчик продолжает писать низкокачественный код даже в сложных приложениях, в результате чего они порой становятся абсолютно неподдерживаемыми. Это значит, что любое изменение функционала в таком приложении занимает в разы, а иногда и в десятки раз больше времени разработчика и, соответственно, денег клиента. Также, эти…
Очень часто случаются ситуации, когда разработчики не сразу понимают друг друга. Общаясь на форуме, они называют одни и те же вещи по-разному. В ход идут различные переводы одних и тех же терминов, слэнг и рунглиш, режущие слух.
Мне кажется, я нашел выход: можно пользоваться словарем, поддерживаемым и регулярно обновляемым всем сообществом. Внести изменения можно здесь, с помощью коммита, а обсудить наилучший вариант перевода того или иного термина можно в данной ветке. Словарь будет регулярно обновляться, поэтому вы смело можете внести эту страницу в закладки.
Неплохой, на мой взгляд, альтернативой данному словарю может быть использование оригинальных терминов на английском…
Ты не совсем понимаешь что такое политики, поэтому рекомендую начать знакомство с ними с документации.
Почему следует использовать политики вместо сторонних решений? Потому что это стандартный инструмент фреймворка и стоимость разработки и поддержки при этом на порядок ниже.
Ну и один камень в огород overkill решений вроде Entrust - это проблемы с быстродействием (N+1, например), баги и более сложная (часто нечитаемая) итоговая логика. Эти проблемы возникают из-за неумения новичков обращаться с пакетами и из-за непонимания как именно они работают "под капотом". А именно новички, прочитав очередной туториал, начинают использовать этот пакет в каждом своем приложении, даже там, где есть всего две роли - пользователь и админ и нет необходимости динамически назначать разрешения.