Не записывается массив в файл
Изучаю PHP. Вот задание. 1. Создайте класс GuestBook, который будет удовлетворять следующим требованиям:
- В конструктор передается путь до файла с данными гостевой книги, в нём же происходит чтение данных из нее (используйте защищенное свойство объекта для хранения данных)
- Метод getData() возвращает массив записей гостевой книги
- Метод append($text) добавляет новую запись к массиву записей
- Метод 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>';
}