zend framework2 — ZF2 / Модельная фабрика

Я просто хочу спросить, как мне создать экземпляр класса модели в ZF2? Я создаю все свои сервисы, формы и т. Д. С фабриками в ServiceManager / FormElementManager / etc …, чтобы внедрить зависимости разных классов, но я думаю, что это не правильный способ создания экземпляра модели, такого как продукт для пример, не так ли?

Должен ли я просто создать его с $product = new Product()? Но что, если у продукта есть зависимости? Я не хочу инициализировать зависимости во всех местах, где они мне нужны.

Спасибо за любые подсказки.

1

Решение

Подумай обо мне. Я не следовал никаким стандартным правилам при разработке приложения, которое вы разрабатываете сейчас. Я уверен! Теперь вы сталкиваетесь с различными проблемами. Потому что я не позаботился о внедрении зависимостей, создании рассеянных объектов и т. Д. При создании этого приложения. Так что угадайте, как это трудно сейчас! Темно! Темно!

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

Сейчас в ZF2:

Сделайте все исправным, где это возможно. Делайте ваши потребности в папке, как показано ниже

src/ModuleName/Model
src/ModuleName/Service
src/ModuleName/Form

Создайте закрытие или же завод (для прикрепления сервисов к ServiceManager), чтобы сделать их доступными для вашего приложения. Любую зависимость вы можете внедрить туда. Держать Module.php тонкий, сделать module.config.php жирный.

0

Другие решения

Управление отношениями модели предметной области (сущности / классы моделей) — это не то, что нужно пытаться использовать с помощью внедрения зависимостей самостоятельно. Это будет считаться изобретением колеса.

Это потому, что когда мы говорим о доменной модели, мы действительно говорим о данные в вашем приложении. Как разработчик, вы уже приняли решение смоделировать ваши данные как объекты (т.е. new Product(); это класс, который представляет данные о продукте в вашем приложении). Тем самым вы даете данным все фантастические способности, которые мы любим в ООП. Это здорово, пока вы не отпустите, что это быстро становится очень сложным, особенно в больших приложениях. «Модель» продукта имеет отношения, отношения с другими моделями и т. Д. Большое приложение может в конечном итоге потребовать управления несколькими экземпляры из этих классов и их отношения в памяти.

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

Очень популярным решением является использование Object Relational Mapper (ORM), такого как Doctrine. Это абстрагирует доступ к базе данных и позволяет вам писать свой код, используя «сущности», игнорируя при этом сложность управления зависимостями.

Хотя внедрение ORM очень эффективно, оно может вызвать другие проблемы. Это причина, по которой у нас есть объектные базы данных, такие как MongoDB, и, вероятно, причина, по которой ZF2 не поставляется с абстракцией базы данных или «уровнем домена». Это действительно будет зависеть от ваших потребностей в любом конкретном проекте.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector