Как изменился мой способ написания бизнес-кода на PHP за последние два года?

задняя часть PHP открытый источник Composer

До

У всех был период замешательства.Ниже приведен метод организации кода, который я постоянно менял, когда начинал разработку PHP.

  • Начальный этап: весь код в одном контроллере контроллера
    • Цзэн Джин просто понимает MVC
  • Среднесрочная перспектива: абстрактная часть бизнес-кода для моделирования модели уровня
    • Я начал думать, должен ли слой модели что-то делать
  • Более поздний этап: контроллер бизнес-кода, уровень модели записывает только метод curd базы данных.
    • Сложный бизнес-код делает контроллер слишком большим и сложным в обслуживании.

настоящее время

Извлекая уроки из предыдущего опыта кодирования, мой текущий метод кодирования изменился следующим образом:

более разумное расслоение

  • Контроллер предоставляет ресурсы
  • Бизнес-код на логический уровень
  • Слой модели записывает только творожный метод db

Чтобы понять степень, все гибко, и это не всегда так.Я думаю, что достаточно простая логика все еще «контроллер бизнес-кода, уровень модели только пишет сырный метод db».

Внедрение зависимостей, отложенная загрузка, интерфейсное промежуточное ПО

  • Контейнер внедрения зависимостей очень важен в сочетании с ленивой загрузкой, сокращением кода, разделением зависимостей и повышением производительности.
  • Pre-middleware внедряет классы, от которых мы зависим

компонентный код

Прежде всего, нам нужно использовать composer для разделения и компоновки нашего кода, простого в бизнесе.composer requireМы можем повторно использовать наш бизнес-код. Но есть проблема, если использоватьpackagist.orgКод должен быть с открытым исходным кодом, можно сказать, что инструменты не имеют ничего общего с бизнесом, и открытый исходный код — это хорошо, но есть проблемы с более чувствительными компонентами, связанными с бизнесом, поэтому нам нужно строить личноеpackagist, пример частного упаковщика:packagist.tigerb.cn/, смотрите в конце статьи конкретные этапы построения.

Суммировать

Теперь позвольте мне взять на себя проект, и я организую свой php-код по следующим аспектам:

  • Компонентный код Composer, полагающийся на открытый исходный код или частного упаковщика.
  • Способ ленивой загрузки перед промежуточным программным обеспечением зависит от внедрения компонентов, необходимых композитору.
  • Контроллер предоставляет ресурсы
    • Элегантный класс инструментов проверки параметров
    • используйте try...catch...наконец-то...
    • Ответ должен максимально соответствовать спокойной идее, например, код ошибки: 400, 404, 500...
  • Бизнес-код на логический уровень (не обязательно)
  • Слой модели записывает только творожный метод db
    • незыблемый принцип

Эпилог

Есть еще много недостатков.Я просто делюсь здесь своими идеями.Если вы хороши, вы можете извлечь из этого уроки.Если вы не хороши, я надеюсь, вы сможете меня поправить.

THX~

приложение

SatisЧтобы создать процесс частного упаковщика, выполните следующие действия по установке:

step 1:

composer create-project composer/satis:dev-master --keep-vcs && cd satis

step 2:

touch satis.json

Содержимое файла satis.json выглядит следующим образом.

{
  "name": "packaglist-tigerb",
  "homepage": "http://packaglist.tigerb.cn",
  "repositories": [
    { "type": "vcs", "url": "http://github.com/tigerb/easy-mipush" },
    { "type": "vcs", "url": "http://github.com/easy-framework/easy-router"}
  ],
  "require-all": true
}

step 3:

php bin/satis build ./satis.json

step 4:

Настройте конфигурацию сервера nginx и перезапустите nginx.

как пользоваться?

Просто настройте composer.json, чтобы добавить новый адрес репозитория Конкретный пример конфигурации выглядит следующим образом:

{
    "name": "tigerb/test",
    "authors": [
        {
            "name": "TIGERB",
            "email": "tigerbcode@gmail.com"
        }
    ],
    "repositories":[
        {"type":"composer", "url": "http://packagist.tigerb.cn"}
    ],
    "config": {
        "secure-http": false
    },
    "require": {
        "tigerb/easy-mipush": "^0.1.0"
    }
}