PHP ООП объект. Как сделать выборку объектов? Изучаю ООП (заказал книжку www.ozon.ru/context/detail/id/5648968 )
Есть обычная ситуация, допустим есть объект "комментарий" или лучше "статья/post" . Когда создаешь обект статьи ( new Article ), все прекрасно и понятно:
у него есть заголовок, есть автор, есть содержание, есть краткое содержание и т.д.
Чего понять не могу - это как сделать выборку статей на страницу? Это будет массив объектов или отдельный объект?
1) Если массив объектов, то зачем нам в массиве объектов "таскать" за собой полное содержание статей?
2) Есть поле/свойство author_id - это уже идентификатор другого объекта "пользователь". Вот как правильно должна происходить загрузка данных для объекта статьи (ведь она только сама про себя все знает), а надо подгрузить user_name, user_avatar из другой сущности.
Прошу, подскажите на конкретных примерах (так лучше пойму) или направьте на статью, где от этом написано.

21 Авг 2019 в 07:08
207 +1
0
Ответы
1

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

Чтобы загрузить данные для объекта статьи, включая информацию об авторе, можно использовать связи между объектами. Например, если у объекта статьи есть поле author_id, которое представляет идентификатор автора, то можно создать связь между объектами статьи и пользователя.

Если используется база данных, можно выполнить запрос, который объединит данные из двух таблиц (статьи и пользователи) по id автора. Таким образом, при выборке объектов статей с помощью массива, можно загружать информацию об авторе из другой таблицы (например, имя и аватар).

Пример:

class Article {
public $id;
public $title;
public $author_id;
public $content;
public $author;
public function __construct($id, $title, $author_id, $content, $author) {
$this->id = $id;
$this->title = $title;
$this->author_id = $author_id;
$this->content = $content;
$this->author = $author;
}
}
class User {
public $id;
public $name;
public $avatar;
public function __construct($id, $name, $avatar) {
$this->id = $id;
$this->name = $name;
$this->avatar = $avatar;
}
}
// Создаем объекты статей и пользователей
$user1 = new User(1, 'John Doe', 'avatar.jpg');
$user2 = new User(2, 'Jane Smith', 'avatar.jpg');
$articles = [
new Article(1, 'Article 1', 1, 'Content 1', $user1),
new Article(2, 'Article 2', 2, 'Content 2', $user2),
];
foreach ($articles as $article) {
echo $article->title;
echo $article->author->name;
echo $article->author->avatar;
}

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

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир