Добрый день! Подскажите пожалуйста, прохожу один онлайн курс по изучению PHP классы и объекты . Ниже приведено задание: Что нужно сделать Мы продолжаем разрабатывать наш аналог «Телеграфа». Опишем класс для описания сущности «текст». Добавим в класс поля и методы, необходимые для хранения, редактирования, удаления и вывода текста на экран. Для успешной реализации программы вам потребуется познакомиться со встроенными функциями PHP для работы с файловой системой: функция file_put_contents — для записи текста в файл; функция file_get_contents — для чтения текста из файла. функция file_exists — для проверки, существует ли файл с заданным именем. Создайте класс TelegraphText. Добавьте поля text,title, author,published и $slug. $title — заголовок текста; $text — текст; $author — имя автора; $published — дата и время последнего изменения текста; $slug — уникальное имя для файла, в котором будет храниться текст (например, test_text_file). Опишите конструктор для класса TelegraphText. При создании объекта данного класса будет передаваться имя автора и уникальное имя файла. В конструкторе задайте соответствующие значения полям $author,$slug и $published. Присвойте текущее время и дату полю $published. Опишите метод storeText для записи текста в файл. Создайте ассоциированный массив с ключами text, title, author, published и присвойте соответствующим элементам значения полей $title, $text,$author и $published. Сериализуйте массив с помощью встроенной функции serialize и запишите его в файл. Имя файла хранится в поле $slug. Опишите метод loadText для загрузки текста из файла. Имя файла хранится в поле $slug. По аналогии с методом storeText десереализуйте содержимое файла (если файл не пуст) в массив, а затем присвойте полям $title, $text, $author и $published значения соответствующих элементов массива. Метод должен возвращать $text. Опишите метод editText для редактирования текста. Метод должен принимать текстовые параметры: заголовок и текст. Метод назначает новые значения полям $text и $title. Создайте объект класса TelegraphText, передав необходимые для конструктора параметры. Вызовите методы editText, а затем storeText. Вызовите метод loadText и выведите значение, которое вернёт этот метод, на экран. Если всё работает правильно, сделайте коммит ваших изменений с помощью Git и отправьте коммит в репозиторий. Не пойму с чего начать.....Класс я создал , а дальше что делать не совсем понимаю ) Что значит поля добавить ?
Добрый день! Подскажите пожалуйста, прохожу один онлайн курс по изучению PHP классы и объекты . Ниже приведено задание: Что нужно сделать Мы продолжаем разрабатывать наш аналог «Телеграфа». Опишем класс для описания сущности «текст». Добавим в класс поля и методы, необходимые для хранения, редактирования, удаления и вывода текста на экран. Для успешной реализации программы вам потребуется познакомиться со встроенными функциями PHP для работы с файловой системой: функция file_put_contents — для записи текста в файл; функция file_get_contents — для чтения текста из файла. функция file_exists — для проверки, существует ли файл с заданным именем. Создайте класс TelegraphText. Добавьте поля text,title, author,published и $slug. $title — заголовок текста; $text — текст; $author — имя автора; $published — дата и время последнего изменения текста; $slug — уникальное имя для файла, в котором будет храниться текст (например, test_text_file). Опишите конструктор для класса TelegraphText. При создании объекта данного класса будет передаваться имя автора и уникальное имя файла. В конструкторе задайте соответствующие значения полям $author,$slug и $published. Присвойте текущее время и дату полю $published. Опишите метод storeText для записи текста в файл. Создайте ассоциированный массив с ключами text, title, author, published и присвойте соответствующим элементам значения полей $title, $text,$author и $published. Сериализуйте массив с помощью встроенной функции serialize и запишите его в файл. Имя файла хранится в поле $slug. Опишите метод loadText для загрузки текста из файла. Имя файла хранится в поле $slug. По аналогии с методом storeText десереализуйте содержимое файла (если файл не пуст) в массив, а затем присвойте полям $title, $text, $author и $published значения соответствующих элементов массива. Метод должен возвращать $text. Опишите метод editText для редактирования текста. Метод должен принимать текстовые параметры: заголовок и текст. Метод назначает новые значения полям $text и $title. Создайте объект класса TelegraphText, передав необходимые для конструктора параметры. Вызовите методы editText, а затем storeText. Вызовите метод loadText и выведите значение, которое вернёт этот метод, на экран. Если всё работает правильно, сделайте коммит ваших изменений с помощью Git и отправьте коммит в репозиторий. Не пойму с чего начать.....Класс я создал , а дальше что делать не совсем понимаю ) Что значит поля добавить ? Начал так : <?php class TelegraphText { private $title; private $text; private $author; private $published ; private $slug; public function __construct($title, $text, $author, $published, $slug) { $this->text = $text; $this->title = $title; $this->author = $author; $this-> = ; } }
PHP: <?php // php 8.1 final class TelegraphText { private \DateTime $published; public function __construct ( private string $title, private string $text, private readonly string $author, \DateTime | string $published, private string $slug ) { if ( is_string ( $published ) ) { $this -> published = new \DateTime( $published ); } } public function storeText(): void { $serialize = serialize ( get_object_vars ( $this ) ); file_put_contents ( $this -> slug, $serialize/* , FILE_APPEND */ ); } public function loadText(): string | false { if ( file_exists ( $this -> slug ) && ( $string = file_get_contents ( $this -> slug ) ) && $text = unserialize ( $string )['text'] ?: false ) { return $text; } return false; } public function editText( string $title, string $text ): void { $this -> title = $title; $this -> text = $text; } } // 7 $class = new TelegraphText( 'title', 'text', 'author', new \DateTime, 'temp' ); // 8 $class -> editText( 'editTitle', 'editText' ); $class -> storeText(); // 9 echo $class -> loadText();
Спойлер: прошел тест PHP: final class TelegraphText { private \DateTime $published; public function __construct ( private string $title, private string $text, private string $author, \DateTime | string $published, private string $slug ) { if ( is_string ( $published ) ) { $published = new \DateTime( $published ); } $this -> published = $published; } public function storeText(): void { $serialize = serialize ( get_object_vars ( $this ) ); file_put_contents ( $this -> slug, $serialize/* , FILE_APPEND */ ); } public function loadText(): string | false { if ( file_exists ( $this -> slug ) && ( $string = file_get_contents ( $this -> slug ) ) && ( $text = unserialize ( $string )['text'] ?: false ) ) { return $text; } return false; } public function editText( string $title, string $text ): void { $this -> title = $title; $this -> text = $text; } } PHP: a:5:{s:9:"published";O:8:"DateTime":3:{s:4:"date";s:26:"2022-11-23 21:18:37.235406";s:13:"timezone_type";i:3;s:8:"timezone";s:13:"Europe/Moscow";}s:5:"title";s:9:"editTitle";s:4:"text";s:8:"editText";s:6:"author";s:6:"author";s:4:"slug";s:4:"temp";}
--- Добавлено --- Спасибо! Будем развивать основы. --- Добавлено --- Виде посмотрел. Да есть над чем работать