Код в парадигме ООП PHP? Напишите код в парадигме ООП, соответствующий следующей структуре. Сущности: Пользователь, Статья. Связи: Один пользователь может написать несколько статей. У каждой статьи может быть только один пользователь-автор. Функциональность: возможность для пользователя создать новую статью; возможность получить автора статьи; возможность получить все статьи конкретного пользователя; возможность сменить автора статьи. Если вы применили какие-либо паттерны при написании, укажите какие и с какой целью. Код, реализующий конкретную функциональность, не требуется, только общая структура классов и методов. Код должен быть прокомментирован в стиле PHPDoc.
У меня вышло как-то так. Только сильно не бейте, сам понимаю, что это ад. Но хоть скажите, это хоть немного похоже на задание или вообще мимо?name
function user($id) {
// т.к. было сказано код функционала не писать, сделаю так...
$this->name = 'test'; // Тут вынимаем из базы имя
$this->id = $id;
}


// создаю новую статью с user_id = $this->id
function creat_article() {
$article = new Article($this->id);
}


// получить все статьи конкретного пользователя
function creat_article() {
$article = new Article; // Создаю без id, чтоб получился "пустой" объект
$article->find_by_user($this->id); // а тут выбираю все статью данного user-а
}
}


// А вот и класс самой статьи
class Article() {

// данные (свойства):
var $user_id; // имя пользователя
var $array_of_article = array(); // Тут буду сидеть все статьи...

// Конструктор
function Article($user_id == nuul) {
// Если в конструктор отправлен id то сразу нахожу его...
if ($user_id) {
$this->user_id = $user_id;
}
}

function find_by_user($user_id == nuul) {
// ищу все статьи данного пользователя...
if ($user_id) {
$this->user_id = $user_id;
}

// Делаю проверку т.к. объект может быть создан без id и в данный метод он может быть не отправлен...
if ($this->user_id) {
// В какой-нибудь массив складываю статьи....
$this->array_of_article[] = ''; // Вынимаю из базы статью и кладу в массив....
}
}


function change_user($new_user_id == nuul) {
if ($new_user_id) {
$this->user_id = $new_user_id;
// И сразу исскуственно вызываю конструктор
Article($new_user_id)
}
}



}

21 Авг 2019 в 06:59
249 +1
1
Ответы
1

Код, который вы представили, написан в парадигме ООП и представляет собой простую реализацию классов "Пользователь" и "Статья" с основными методами для работы с ними.

Однако есть некоторые недочеты и ошибки:

Конструктор класса Article() содержит ошибку сравнения в условии ($user_id == nuul), вероятно, вы имели в виду ($user_id == null). Метод creat_article() в классе user имеет дублирующееся имя и тело метода должно быть скорректировано.Сложность кода и отсутствие нормальной проверки ошибок делают его трудным для понимания и поддержки.

Если бы я писал подобную систему, я бы использовал паттерн Data Mapper для работы с базой данных и получения/сохранения данных о пользователях и статьях. Это даст более легкую расширяемость и управляемость кода.

Также я бы создал методы для добавления и изменения данных статей, а также добавил бы проверки на правильность входных данных и обработку ошибок.

Надеюсь, мой ответ окажется полезным для вас.

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