Архитектура Magento - использование помощника для обработки всех данных и переменных
-
16-10-2019 - |
Вопрос
Считается ли хорошей / плохой архитектурой настройка помощника и предоставление ему возможности обрабатывать все константы, переменные и данные?
В настоящее время я пишу довольно простое расширение для работы с логинами участников / не являющихся участниками - в основном, для интерфейса, например.В определенных случаях должен быть установлен флажок "запомнить меня", в определенных случаях должно быть открыто поле входа в систему и т.д.Для этого достаточно широко используются файлы cookie и отсутствует реальный доступ к базе данных с очень минимальными параметрами конфигурации через администратора.
Решение
"Константы, переменные и данные" - это звучит для меня как "модельные" вещи.
Как правило, ответ действительно будет зависеть от конкретной проблемы, которую вы пытаетесь решить.Но я склонен инкапсулировать подобные вещи в модель - даже если для этого не нужно использовать базу данных.
Теперь помните, что модель представляет ваш домен (где домен означает логику бизнеса / приложений), а не просто сохранение данных.Это может сбить с толку, так как в наши дни люди видят "модель" и сразу думают о базе данных.
Исключением из этого правила является случай, когда вам нужно получить доступ к поведению из блока или шаблона.Очень удобно использовать помощников:
$this->helper('foomodule')->formatRefererenceNumber($myModel->getReferenceNumber())
Это гораздо приятнее (и эффективнее с точки зрения вычислений), чем альтернативный вариант
Mage::getModel('foomodule/model')->formatReferenceNumber($myModel->getReferenceNumber()
Конечно, вы можете подумать, не должен ли formatReferenceNumber быть просто методом в $ MyModel?И, возможно, да.Но наличие его в помощнике позволяет вам отделить заботу о форматировании ссылочного номера от его хранения.Вы можете легко указать альтернативные параметры форматирования - возможно, для разных помощников - без утяжеления вашей модели.
В другой раз, когда вам захочется использовать помощников поверх моделей, это если вы обнаружите, что пишете много PHP-кода в шаблонах.Допустим, у вас есть таблица строк, и вы хотите, чтобы нечетные строки были одного цвета, а четные - другого.Я извлекаю такого рода функциональность из помощника.
Как правило, эвристика, которой я придерживаюсь, заключается в хранении бизнес-данных и логики в моделях и использовании помощников для преобразования данных в определенные формы для представления во внешнем интерфейсе.