До
У всех был период замешательства.Ниже приведен метод организации кода, который я постоянно менял, когда начинал разработку PHP.
- Начальный этап: весь код в одном контроллере контроллера
- Цзэн Джин просто понимает MVC
- Среднесрочная перспектива: абстрактная часть бизнес-кода для моделирования модели уровня
- Я начал думать, должен ли слой модели что-то делать
- Более поздний этап: контроллер бизнес-кода, уровень модели записывает только метод curd базы данных.
- Сложный бизнес-код делает контроллер слишком большим и сложным в обслуживании.
настоящее время
Извлекая уроки из предыдущего опыта кодирования, мой текущий метод кодирования изменился следующим образом:
более разумное расслоение
- Контроллер предоставляет ресурсы
- Бизнес-код на логический уровень
- Слой модели записывает только творожный метод db
Чтобы понять степень, все гибко, и это не всегда так.Я думаю, что достаточно простая логика все еще «контроллер бизнес-кода, уровень модели только пишет сырный метод db».
Внедрение зависимостей, отложенная загрузка, интерфейсное промежуточное ПО
- Контейнер внедрения зависимостей очень важен в сочетании с ленивой загрузкой, сокращением кода, разделением зависимостей и повышением производительности.
- Что касается контейнера, пожалуйста, обратитесь к моей предыдущей простой реализацииeasy-PHP.tiger B. талант /#/?ID=Saiervi…
- Pre-middleware внедряет классы, от которых мы зависим
- Простое переднее промежуточное ПО, которое я реализовал, пример монтирует шлюз перед контроллером.easy-PHP.tiger B. талант /#/?ID=MVC-он…
компонентный код
Прежде всего, нам нужно использовать composer для разделения и компоновки нашего кода, простого в бизнесе.composer requireМы можем повторно использовать наш бизнес-код. Но есть проблема, если использоватьpackagist.orgКод должен быть с открытым исходным кодом, можно сказать, что инструменты не имеют ничего общего с бизнесом, и открытый исходный код — это хорошо, но есть проблемы с более чувствительными компонентами, связанными с бизнесом, поэтому нам нужно строить личноеpackagist, пример частного упаковщика:packagist.tigerb.cn/, смотрите в конце статьи конкретные этапы построения.
Суммировать
Теперь позвольте мне взять на себя проект, и я организую свой php-код по следующим аспектам:
- Компонентный код Composer, полагающийся на открытый исходный код или частного упаковщика.
- Способ ленивой загрузки перед промежуточным программным обеспечением зависит от внедрения компонентов, необходимых композитору.
- Контроллер предоставляет ресурсы
- Элегантный класс инструментов проверки параметров
- используйте try...catch...наконец-то...
- Ответ должен максимально соответствовать спокойной идее, например, код ошибки: 400, 404, 500...
- Бизнес-код на логический уровень (не обязательно)
- Сложный бизнес-код сначала моделируется, а затем пишется. Моделирование может организовать наш код и использовать некоторые шаблоны проектирования. Для моделирования вы можете обратиться к моей статьеШаблон наблюдателя и декоратора сводки ежемесячной работы PHPer
- Слой модели записывает только творожный метод 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"
}
}