Skip to content

Anti-hardcode — вынесение констант

Правило

Магическое число/строка встречается 2+ раз или имеет бизнес-смысл → выноси.

Куда выносить

config/*.php — пороги, лимиты, настройки

  • Pagination size, upload max size, rate limit, cache TTL
  • Search radius, max distance, бизнес-пороги
  • Цена тарифа, срок оплаты, валюта, комиссия
  • URLs API, ключи сервисов (через env()config())
  • Feature flags
  • Доступ — только config('key'), никогда env() в коде

App\Enums\* — статусы, типы, роли

  • Статусы модели (draft, published, archived)
  • Типы (boost, paid, free), роли (admin, moderator, user)
  • Валюты, языки, форматы
  • Столбец БД — $table->enum() с теми же значениями + cast в PHP Enum class

lang/*/*.php — текст UI

  • Любой текст пользователю — через __('key') / trans()
  • Кнопки, заголовки, placeholder, валидация, email
  • Даже в одноязычном проекте — готовность к i18n

app/Support/Constants/ — регексы, ключи

  • Регексы (телефон, slug, URL) — именованная константа
  • Ключи кеша — CacheKeys::ORG_LIST, не строка
  • Ключи сессии/cookie, HTTP headers

Blade — запрещённый хардкод

  • URL → только route('name')
  • Ассеты → asset(), Vite::asset(), Storage::url()
  • Локаль → app()->getLocale(), не 'ru'
  • Даты → ->translatedFormat('d F Y'), не ->format('d.m.Y')
  • CSS бизнес-значения → data-атрибут или component prop

Миграции/сидеры

  • Города, категории, тарифы — из JSON/CSV/API, не хардкод
  • Ссылки — по slug/email/name, не по id

Примеры

ЗапрещеноПравильно
->paginate(20)->paginate(config('catalog.pagination.organizations'))
where('status', 'active')where('status', OrgStatus::Active)
$org->tier === 'boost'$org->tier === Tier::Boost
return 'Организация сохранена'return __('messages.organization.saved')
Cache::tags(['orgs', 'city-moscow'])Cache::tags([CacheTags::ORGANIZATIONS, CacheTags::city($slug)])
if ($distance < 5000)if ($distance < config('catalog.search.nearby_radius_meters'))
<a href="/ru/moscow/food">route('city.category', [...]) + __('categories.food')

Внутренняя база знаний студии