Архитектура Magento - использование помощника для обработки всех данных и переменных

magento.stackexchange https://magento.stackexchange.com/questions/823

Вопрос

Считается ли хорошей / плохой архитектурой настройка помощника и предоставление ему возможности обрабатывать все константы, переменные и данные?

В настоящее время я пишу довольно простое расширение для работы с логинами участников / не являющихся участниками - в основном, для интерфейса, например.В определенных случаях должен быть установлен флажок "запомнить меня", в определенных случаях должно быть открыто поле входа в систему и т.д.Для этого достаточно широко используются файлы cookie и отсутствует реальный доступ к базе данных с очень минимальными параметрами конфигурации через администратора.

Это было полезно?

Решение

"Константы, переменные и данные" - это звучит для меня как "модельные" вещи.

Как правило, ответ действительно будет зависеть от конкретной проблемы, которую вы пытаетесь решить.Но я склонен инкапсулировать подобные вещи в модель - даже если для этого не нужно использовать базу данных.

Теперь помните, что модель представляет ваш домен (где домен означает логику бизнеса / приложений), а не просто сохранение данных.Это может сбить с толку, так как в наши дни люди видят "модель" и сразу думают о базе данных.

Исключением из этого правила является случай, когда вам нужно получить доступ к поведению из блока или шаблона.Очень удобно использовать помощников:

$this->helper('foomodule')->formatRefererenceNumber($myModel->getReferenceNumber())

Это гораздо приятнее (и эффективнее с точки зрения вычислений), чем альтернативный вариант

Mage::getModel('foomodule/model')->formatReferenceNumber($myModel->getReferenceNumber()

Конечно, вы можете подумать, не должен ли formatReferenceNumber быть просто методом в $ MyModel?И, возможно, да.Но наличие его в помощнике позволяет вам отделить заботу о форматировании ссылочного номера от его хранения.Вы можете легко указать альтернативные параметры форматирования - возможно, для разных помощников - без утяжеления вашей модели.

В другой раз, когда вам захочется использовать помощников поверх моделей, это если вы обнаружите, что пишете много PHP-кода в шаблонах.Допустим, у вас есть таблица строк, и вы хотите, чтобы нечетные строки были одного цвета, а четные - другого.Я извлекаю такого рода функциональность из помощника.

Как правило, эвристика, которой я придерживаюсь, заключается в хранении бизнес-данных и логики в моделях и использовании помощников для преобразования данных в определенные формы для представления во внешнем интерфейсе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top