За последние 24 часа нас посетили 22472 программиста и 1279 роботов. Сейчас ищут 797 программистов ...

Практическая работа по php

Тема в разделе "PHP для новичков", создана пользователем vasily73, 23 ноя 2022.

  1. vasily73

    vasily73 Новичок

    С нами с:
    26 окт 2022
    Сообщения:
    3
    Симпатии:
    0
    Добрый день! Подскажите пожалуйста, прохожу один онлайн курс по изучению PHP классы и объекты . Ниже приведено задание:


    Что нужно сделать

    Мы продолжаем разрабатывать наш аналог «Телеграфа». Опишем класс для описания сущности «текст». Добавим в класс поля и методы, необходимые для хранения, редактирования, удаления и вывода текста на экран.

    Для успешной реализации программы вам потребуется познакомиться со встроенными функциями PHP для работы с файловой системой:

    • функция file_put_contents — для записи текста в файл;
    • функция file_get_contents — для чтения текста из файла.
    • функция file_exists — для проверки, существует ли файл с заданным именем.

    1. Создайте класс TelegraphText.
    2. Добавьте поля text,title, author,published и $slug.
      • $title — заголовок текста;
      • $text — текст;
      • $author — имя автора;
      • $published — дата и время последнего изменения текста;
      • $slug — уникальное имя для файла, в котором будет храниться текст (например, test_text_file).
    3. Опишите конструктор для класса TelegraphText. При создании объекта данного класса будет передаваться имя автора и уникальное имя файла. В конструкторе задайте соответствующие значения полям $author,$slug и $published. Присвойте текущее время и дату полю $published.
    4. Опишите метод storeText для записи текста в файл. Создайте ассоциированный массив с ключами text, title, author, published и присвойте соответствующим элементам значения полей $title, $text,$author и $published. Сериализуйте массив с помощью встроенной функции serialize и запишите его в файл. Имя файла хранится в поле $slug.
    5. Опишите метод loadText для загрузки текста из файла. Имя файла хранится в поле $slug. По аналогии с методом storeText десереализуйте содержимое файла (если файл не пуст) в массив, а затем присвойте полям $title, $text, $author и $published значения соответствующих элементов массива. Метод должен возвращать $text.
    6. Опишите метод editText для редактирования текста. Метод должен принимать текстовые параметры: заголовок и текст. Метод назначает новые значения полям $text и $title.
    7. Создайте объект класса TelegraphText, передав необходимые для конструктора параметры.
    8. Вызовите методы editText, а затем storeText.
    9. Вызовите метод loadText и выведите значение, которое вернёт этот метод, на экран.
    10. Если всё работает правильно, сделайте коммит ваших изменений с помощью Git и отправьте коммит в репозиторий.

    Не пойму с чего начать.....Класс я создал , а дальше что делать не совсем понимаю )
    Что значит поля добавить ?
     
  2. vasily73

    vasily73 Новичок

    С нами с:
    26 окт 2022
    Сообщения:
    3
    Симпатии:
    0
    Добрый день! Подскажите пожалуйста, прохожу один онлайн курс по изучению PHP классы и объекты . Ниже приведено задание:


    Что нужно сделать

    Мы продолжаем разрабатывать наш аналог «Телеграфа». Опишем класс для описания сущности «текст». Добавим в класс поля и методы, необходимые для хранения, редактирования, удаления и вывода текста на экран.

    Для успешной реализации программы вам потребуется познакомиться со встроенными функциями PHP для работы с файловой системой:

    • функция file_put_contents — для записи текста в файл;
    • функция file_get_contents — для чтения текста из файла.
    • функция file_exists — для проверки, существует ли файл с заданным именем.

    1. Создайте класс TelegraphText.
    2. Добавьте поля text,title, author,published и $slug.
      • $title — заголовок текста;
      • $text — текст;
      • $author — имя автора;
      • $published — дата и время последнего изменения текста;
      • $slug — уникальное имя для файла, в котором будет храниться текст (например, test_text_file).
    3. Опишите конструктор для класса TelegraphText. При создании объекта данного класса будет передаваться имя автора и уникальное имя файла. В конструкторе задайте соответствующие значения полям $author,$slug и $published. Присвойте текущее время и дату полю $published.
    4. Опишите метод storeText для записи текста в файл. Создайте ассоциированный массив с ключами text, title, author, published и присвойте соответствующим элементам значения полей $title, $text,$author и $published. Сериализуйте массив с помощью встроенной функции serialize и запишите его в файл. Имя файла хранится в поле $slug.
    5. Опишите метод loadText для загрузки текста из файла. Имя файла хранится в поле $slug. По аналогии с методом storeText десереализуйте содержимое файла (если файл не пуст) в массив, а затем присвойте полям $title, $text, $author и $published значения соответствующих элементов массива. Метод должен возвращать $text.
    6. Опишите метод editText для редактирования текста. Метод должен принимать текстовые параметры: заголовок и текст. Метод назначает новые значения полям $text и $title.
    7. Создайте объект класса TelegraphText, передав необходимые для конструктора параметры.
    8. Вызовите методы editText, а затем storeText.
    9. Вызовите метод loadText и выведите значение, которое вернёт этот метод, на экран.
    10. Если всё работает правильно, сделайте коммит ваших изменений с помощью 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-> = ;

    }
    }
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    Это прям о тебе - слабые основы.
     
    vasily73 и antoniii нравится это.
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    PHP:
    1. <?php // php 8.1
    2.  
    3. final class TelegraphText
    4. {
    5.     private \DateTime $published;
    6.  
    7.     public function __construct (
    8.         private string $title,
    9.         private string $text,
    10.         private readonly string $author,
    11.         \DateTime | string $published,
    12.         private string $slug
    13.     )
    14.     {
    15.         if ( is_string ( $published ) )
    16.         {
    17.             $this -> published = new \DateTime( $published );
    18.         }
    19.     }
    20.  
    21.     public function storeText(): void
    22.     {
    23.         $serialize = serialize ( get_object_vars ( $this ) );
    24.    
    25.         file_put_contents ( $this -> slug, $serialize/* , FILE_APPEND */ );
    26.     }
    27.  
    28.     public function loadText(): string | false
    29.     {
    30.         if (
    31.             file_exists ( $this -> slug ) &&
    32.             ( $string = file_get_contents ( $this -> slug ) ) &&
    33.             $text = unserialize ( $string )['text'] ?: false
    34.         )
    35.         {
    36.             return $text;
    37.         }
    38.    
    39.         return false;
    40.     }
    41.  
    42.     public function editText( string $title, string $text ): void
    43.     {
    44.         $this -> title = $title;
    45.    
    46.         $this -> text = $text;
    47.     }
    48. }
    49.  
    50.  
    51.  
    52.  
    53.  
    54. // 7
    55. $class = new TelegraphText( 'title', 'text', 'author', new \DateTime, 'temp' );
    56.  
    57. // 8
    58. $class -> editText( 'editTitle', 'editText' );
    59.  
    60. $class -> storeText();
    61.  
    62. // 9
    63. echo $class -> loadText();
     
    #4 MouseZver, 23 ноя 2022
    Последнее редактирование: 23 ноя 2022
    antoniii нравится это.
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    PHP:
    1. final class TelegraphText
    2. {
    3.     private \DateTime $published;
    4.    
    5.     public function __construct (
    6.         private string $title,
    7.         private string $text,
    8.         private string $author,
    9.         \DateTime | string $published,
    10.         private string $slug
    11.     )
    12.     {
    13.         if ( is_string ( $published ) )
    14.         {
    15.             $published = new \DateTime( $published );
    16.         }
    17.        
    18.         $this -> published = $published;
    19.     }
    20.    
    21.     public function storeText(): void
    22.     {
    23.         $serialize = serialize ( get_object_vars ( $this ) );
    24.        
    25.         file_put_contents ( $this -> slug, $serialize/* , FILE_APPEND */ );
    26.     }
    27.    
    28.     public function loadText(): string | false
    29.     {
    30.         if (
    31.             file_exists ( $this -> slug ) &&
    32.             ( $string = file_get_contents ( $this -> slug ) ) &&
    33.             ( $text = unserialize ( $string )['text'] ?: false )
    34.         )
    35.         {
    36.             return $text;
    37.         }
    38.        
    39.         return false;
    40.     }
    41.    
    42.     public function editText( string $title, string $text ): void
    43.     {
    44.         $this -> title = $title;
    45.        
    46.         $this -> text = $text;
    47.     }
    48. }
    PHP:
    1. 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";}
     
  6. vasily73

    vasily73 Новичок

    С нами с:
    26 окт 2022
    Сообщения:
    3
    Симпатии:
    0
    --- Добавлено ---
    Спасибо! Будем развивать основы.
    --- Добавлено ---
    Виде посмотрел. Да есть над чем работать
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Эту строчку никто не учитывает :)
     
    vasily73 нравится это.