Задать вопрос
Ответы пользователя по тегу Yii
  • Не могу понять для чего нужны 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()
    Ответ написан
    Комментировать