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


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

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

Author: Aasim Goriya, 2013-02-19

1 answers

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

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

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

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

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

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

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

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

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

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

 3
Author: Aaron Bonner, 2013-02-19 10:27:07