Nano Hash - криптовалюты, майнинг, программирование

Лучшая практика сервисного уровня/контроллера в Zf2

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

Если я правильно понял

1.) сервисный уровень будет обрабатывать такие данные, как

  • увлажняющий
  • фильтровать/проверять данные
  • обработка (сохранение, удаление - CRUD)

2.) Контроллер будет обрабатывать клей между

  • сервисный уровень
  • форма
  • Посмотреть
  • и т.п.

Преимущества:

  • СУХОЙ принцип, вы будете независимы от структуры вывода (json, rest, обычный вывод и т. д.)

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

но здесь я понимаю свою ошибку, я не знаю, как определить клей между

  • оказание услуг
  • контроллер
  • форма

буду ли я фильтровать / проверять данные по службе или вызывать геттер в контроллере для ввода в форму?

надеюсь это будет понятно

С Уважением


Ответы:


1

Служба может быть любым объектом, выполняющим определенную задачу, которая будет использоваться любыми моделями или кодами во всем приложении. Служба также может быть представлена ​​через конфигурацию службы, например. Я создал сервис для преобразования даты формата dd/mm/yyyy в mysql и наоборот.

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

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

public function formAction(){
    /* @var $model \GlsApi\View\Models\ViewModelInterface */
    $model = $this->getServiceLocator()->get('Entry/BoxInfoViewModel');
    $viewRenderModel = $this->getServiceLocator()->get('GlsApi/ViewRenderModel');
    $model->getFormView($viewRenderModel);
    return new \Zend\View\Model\JsonModel(array('form' => $viewRenderModel->getRenderedView(), 'formValues' => $model->getDefaultValues()));
}

public function infoAction(){
    /* subscriber id or cardno */
    $id = $this->params()->fromPost("id", 0);
    $searchType = $this->params()->fromPost("st", 'subscriber');
    /* @var $model \GlsApi\Models\ModelInterface */
    $model = $this->getServiceLocator()->get('Entry/BoxInfoViewModel');
    return new \Zend\View\Model\JsonModel($model->getInfo($id, $searchType)->getArrayCopy());
}

В первом действии я вызываю свою модель представления с помощью локатора службы, затем вызываю метод getFormView, который устанавливает частичное отображение формы и объекта формы для переданной модели представления и, наконец, вызывает метод getRenderView, который создает представление формы, все это мои пользовательские методы, которые я абстрагировал, чтобы упростить кодирование. Я построил свой RIA, который выполняет транзакции с использованием json, это последняя строка моего метода.

Form это класс, предоставленный ZF2 для представления формы как модели данных, которая представляет все элементы формы html вместе с объектами формы, у нас есть средства проверки и фильтры, которые сокращают большую часть работы по проверке формы.

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

01.06.2014
Новые материалы

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

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..