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

21 Авг 2019 в 07:08
221 +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 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир