В настоящее время я работаю над проектом, связанным с XML в текстовом файле. Я хочу извлечь содержимое, и я хочу добавить его в таблицу tt_content. Мой вопрос: где я должен поместить все функции (upload-file, extract-content, insert-tt_content)?Должен ли я записывать все свои функции в класс-утилит или в класс обслуживания?
ответ
Утилиты предназначены для статической функциональности, которая не зависит от состояния. Хорошими примерами являются PathUtility
и StringUtility
. Как только вы вызываете функцию, она выполняет задание и ничего больше.
Услуги, с другой стороны, могут обрабатывать состояние и, как правило, сложнее. У вас может быть какой-то DownloadService
, который инициализируется URL-адресом, затем извлекает его и, наконец, делает какую-то почтовую обработку. Основным примером будет MarkerBasedTemplateService
.
Как правило, утилита не имеет зависимостей и не вызывает другие (нестатические) методы. Сервисы более сложны и могут вызвать другие услуги. Услуги могут иметь внутреннее состояние.
Также не забудьте проверить документацию ядра относительно архитектурных принципов: https://docs.typo3.org/typo3cms/CodingGuidelinesReference/latest/PhpArchitecture/ModelingCrossCuttingConcerns/StaticMethods/Index.html
Вы можете написать свои функции в UtilityClass или в ServiceClass или (я думаю, что лучший способ) вы используете оба. Группируйте свои функции по задаче, например. StringUtility, FileUtility и т. Д. Ваш ServiceClass используется, чем необходимая функция UtilityFunction.
У вас мало функций, и вы можете использовать его снова и снова. Например, посмотрите в другом большом расширении как tx_news, femanager и т. Д.
Просто замечание: есть новая глава в руководящих принципах кодирования в отношении PHP архитектуры во вселенной TYPO3: https://docs.typo3.org /typo3cms/CodingGuidelinesReference/latest/PhpArchitecture/Index.html Это очень хорошее чтение, и каждый разработчик TYPO3 должен это знать :) –