Не могу понять для чего нужны Entities в ООП PHP, Yii?

Всем дорбого времени суток, я новичок, изучаю ООП
научился работать с репозиториями, сервисами, хелперами..
и очень часто в примерах кода встречаю такую сущность как Entities, но ни как не могу понять для чего она нужна?

туда обычно передают уже заранее известные данные что бы создать объект, а потом дергают эти данные, геттерами или меняют их сеттерами..
но я это все могу и без Entity делать ... помогите разобраться, объясните пожалуйста, я чуствую что это что-то оочень важное, без чего дальше программировать нельзя, но ни как не могу понять для чего ))
  • Вопрос задан
  • 724 просмотра
Решения вопроса 1
@thyratr0n
Есть разные подходы к пониманию смысла этих вещей.
Entities чаще всего используются в контексте DDD-подхода. Там это означает то, что объект может изменять свое состояние (фигура может менять цвет, стакан может заполняться и тд). Супротив Entities выступают т.н. ValueObject, которые используются только для чтения и менять свое состояние не могут.
И те, и другие используются в бизнес-логике приложения и генерируются либо хранилищами (storage), либо сервисам (в зависимости от выбранного подхода).

В контексте же Yii понятие Entity не применяется. ибо там структурной единицей бизнес-логики выступают экземпляры ActiveRecord чаще всего (сам фреймворк к этому располагает), либо, иногда, наследники Model.

Главное - это то, что сущность не обязательна должна сохраняться as is, т.е. иметь четкую проекцию в БД, ибо сущностью может выступать экземпляр паттерна Композит - все зависит от хранилища/сервиса, который это дело будет "CRUD'ить".
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@sidni
Ну если очень грубо и примитивно отвечать то в Yii2: Entities заменяют Модели ActiveRecord.
В чем возник вечный холивар, почему Yii2 это фрейм для новичков, тк реализация ActiveRecord именно в Yii2 получилась очень "толстая"
Ответ написан
402d
@402d
Программирую с 1989 года
Сейчас меня закидают тапками.
Но у меня это просто фиктивный класс
/**
 * Class Entity_stock
 * @property $id int(11) NOT NULL,
 * @property $distribution_point int(11) NOT NULL COMMENT 'торговая точка',
 * @property $name varchar(255) NOT NULL COMMENT 'наименование',
.....
**/
class Entity_stock{}

Тупо делаю выгрузку из муськи структуры таблицы.
Что это дает - автозавершение кода, не нужно помнить как называется каждое поле

Модель вернула объект
class Stock_model {
  /**
   * @return Entity_stock
   **/
  public get_by(){
     return обычный вызов класса актив рекорд возвращающий stdClass
  }
}

а ИДЕ теперь знает какие поля в объекте есть.

Реальное преобразование к объекту заданного класса я считаю излишним оверхедом в своих проектах.

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

Опять мое мнение об их использование не совпадает с поклонниками. Для веба строя это не нужно. Лишний
оверхед. Активный сеттер, который проверяет значения на допустимость тут не нужен. Но в чужой
монастырь со своим уставом не ходят. Используют доктрину, пишем под нее. У всех гетеры/сетеры разбираемся
как их правильно использовать.

Еще есть понятие Интерфейса
так вот в нем нельзя объявить переменную, только публичный метод.
В таком случае гетеры с сетерами становятся единственным способом .
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы