Bonjour,

Voila je rencontre un petit problème avec mon code.
Je suis le tuto suivant TP : Connexion à la base de donnée, je suis arrivé vers la 28ème minute au moment où on a fini de créer le public function __get($key).
Voici mon code dans article.php :

<?php
namespace App\Table;
class Article {
    public function __get($key){
        $method = 'get' . ucfirst($key);
        return $this->method();
    }
    public function getUrl(){
        return 'index.php?p=article&id' . $this->id;
    }

    public function getExtrait(){
        $html = '<p>'. substr($this->contenu,0, 150).'...</p>';
        $html .= '<p><a href="'.$this->getUrl().'">Voir la suite</a></p>';
        return $html;
    }
}

Voici mon code dans home.php

<ul>
<?php
foreach($db->query('SELECT * FROM article', 'App\Table\Article') as $post): ?>
        <h2>
            <a href="<?= $post->url ?>"><?= $post->titre;?></a>
        </h2>
        <p>
            <?= $post->extrait; ?>
        </p>
<?php endforeach; ?>
</ul>

J'ai donc l'erreur suivante : ( ! ) Fatal error: Call to undefined method App\Table\Article::method() in C:\wamp\www\blog\app\Table\Article.php on line 6 Call Stack #TimeMemoryFunctionLocation 10.0039136120{main}( )..\index.php:0 20.0102167752require( 'C:\wamp\www\blog\pages\home.php' )..\index.php:15 30.0191184368App\Table\Article->__get( )..\index.php:5

Je ne comprends pas ce qu'elle veut dire si quelqu'un veut bien m'aider :)

Merci d'avance

2 réponses


GallandJe
Réponse acceptée

Salut,

Ton erreur est toute bête :

return $this->method();

En fait c'est :

return $this->$method();

Tu as simplement oublié le $ avant method(). ça devrait fonctionner avec cette correction :)

Cordialement,

Fatavis
Auteur

Merci de ta réponse rapide. Tu m'as bien aidé :)
Au revoir