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