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

    @Alk90
    php, mysql, jquery, css, html, api
    Что-то какие-то замудреные ответы вокруг да около. Ничего конкретного...
    Многие уже написали: "Entity" это сущность. Но никто так и не объяснил для чего... попробую вставить свои 5 копеек. Ну и мой ответ не будет привязан к Yii. как уже сказали там используется другой подход.

    Как уже сказали Entity представляет сущность, например пользователь.
    Итак, Entity у нас это пользователь. Мы знаем что у пользователя в любом случае есть идентификатор, имя, фамилия. Думаю, для примера хватит.
    Так вот.
    Когда вы достали данные из базы в некой модели пользователей, что вы сможете сделать? Ну допустим положить их в массив и в нужный момент вывести как вам угодно, но... по мере роста проекта, пользователь должен будет выводиться в разных частях веб приложения. В одном месте достаточно имени, в другом месте достаточно фамилии, а где-то нужно фамилия и имя. Допустим в БД вы будете хранить имя и фамилию в отдельных столбцах.

    И смотрите что получается. Если у вас есть комментарии и там нужно вывести "имя фамилия", так же есть страница подписчики. Там тоже нужно вывести "имя фамилия". И там и там выводится один пользователь, но внешний вид вывода будет разным. И если пойти по способу "данные в массиве". То для каждого вывода вам нужно будет делать что-то подобное:
    echo $user['name'].' '.$user['last_name'];

    А таких выводов может быть десятки.
    Но если вы вместо массива будете использовать объект (класс) user
    То внутри вам достаточно создать метод:
    public function getFullName(){
       return $this->name.' '.$this->last_name
    }


    Теперь во всем приложении и в любом файле вы будете знать, что у вас есть метод, который выведет имя и фамилию. Поэтому этот объект вы можете передавать куда угодно. Например в любое из десятков представлений (views) которые будут уверены в существовании одного метода.

    И когда вы решите поменять местами и писать "фамилия имя" во всем приложении. Вам достаточно будет поменять это в методе getFullName()
    Ответ написан
    Комментировать
  • Не могу понять для чего нужны Entities в ООП PHP, Yii?

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

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

    Главное - это то, что сущность не обязательна должна сохраняться as is, т.е. иметь четкую проекцию в БД, ибо сущностью может выступать экземпляр паттерна Композит - все зависит от хранилища/сервиса, который это дело будет "CRUD'ить".
    Ответ написан
    2 комментария