Не записывается массив в файл

Изучаю PHP. Вот задание. 1. Создайте класс GuestBook, который будет удовлетворять следующим требованиям:

  1. В конструктор передается путь до файла с данными гостевой книги, в нём же происходит чтение данных из нее (используйте защищенное свойство объекта для хранения данных)
  2. Метод getData() возвращает массив записей гостевой книги
  3. Метод append($text) добавляет новую запись к массиву записей
  4. Метод save() сохраняет массив в файл

Сам код:

class GuestBook{
    public $path = __DIR__ . '/data.txt';
    public $text;
    protected $listGuest;

    public function __construct(){
         $this -> listGuest = file($this -> path);
    }

    public function getData(){
        return $this -> listGuest;
    }

    public function append($text){
        $this->text = $text;
        return $this->listGuest[] = $this->text;
    }

    public function save(){
        file_put_contents($this->path,$this->listGuest);
    }
}
# index.php
<?php
require_once __DIR__ . '/entry.php';
?>
<form method="post" action="entry.php">
    <input type="text" name="guest">
    <button type="submit">Новая запись</button>
</form>

<?php

$guestBook = new GuestBook();
$guestBook->getData();
$guestBook->text = $_POST['guest'];
$guestBook->append($guestBook->text);
$guestBook->save();
foreach ($guestBook->getData() as $guest){
    echo $guest . '<br>';
}

Новый массив не записывается в файл. Не могу понять почему. С ООП работаю в первые. Подскажите, где ошибка.


Ответы (1 шт):

Автор решения: Denys Skotarenko

Окончательный вариант. Всем Спасибо за помощь!

<p>Форма для добавление нового пользователя:</p>
<form action="/6/index.php" method="post">
    <input type="text" name="guest">
    <button type="submit">Go</button>
</form>


<?php
class GuestBook{
    protected $data;
    public function __construct($path){
        $this->data = file($path);
    }
    public function getData(){
        return $this->data;
    }
    public function append($text){
        return $this->data[] = $text . "\n";
    }

    public function save(){
        file_put_contents(__DIR__ . '/data.txt',$this->getData());
    }
}

$guestBook = new GuestBook(__DIR__ . '/data.txt');
if (!empty($_POST['guest'])){
    $guestBook->append($_POST['guest']);
    $guestBook->save();
}

foreach ($guestBook->getData() as $guest){
    echo $guest . '<br>';
}
→ Ссылка