Bonjour à tous,

Je suis confronté à une erreur de logique, et je n'arrive pas à comprendre la démarche,

Dans mon GuestBook, je fais appel à une méthode getMessage :

   public function getMessage():array
    {
        $content = trim(file_get_contents($this->file));
        $lines = explode(PHP_EOL, $content);
        $messages = [];

        foreach($lines as $line) {
            $data = json_decode($line, true);
            $messages[] = new Message($data['username'], $data['message'], new DateTime("@" . $data['date'])); 
        }
        return array_reverse($messages);                 
    }

La logique est celle ci :
Je creais une méthode getMessage pour ma class GuestBook,
Je recupère le fichier $file, dans lequel se trouve le message posté par l'utilisateur (class Message)

Je souhaite faire apparaître les msg dans mon HTML, donc je creais une methode toHTML() dans ma class Message.

    public function toHTML()
    {
        $username = htmlentities($this->username);
        $date = $this->date->format('d/m/Y à H:i');
        $message = htmlentities($this->message);
        return <<<HTML
        <p>
            <strong>{$username}</strong> <em> le {$date} </em><br>
            {$message} 
        </p>
HTML;
    }

Cependant, je ne comprends pas pourquoi je dois creer un new Message dans le ForEach, alors que le message existe deja...

Sur la vidéo du totoriel, il en parle a 32.50min.

J'èspere avoir un retour de votre part :)

Merci beaucoup

2 réponses


Bonjour,

Dans ta classe GuestBook, la méthode getMessage() boucle sur le contenu du fichier et pour chaque message trouvé elle crée une instance de la classe Message avec les bons paramètres.
Tu te retrouve donc avec un tableau d'objets (de type Message) que tu peux manipuler plus facilement en utilisant les méthodes de la classe Message, notamment la méthode toHTML() pour l'affichage.

Merci pour ton retour Gillesr, c'est parfait !