Bonjour à tous,

J'ai un léger problème avec mon code.
Je cherche à mettre en place un site avec le Framework Slim, un accès à une base de données MySQL via PDO, le tout avec une interface Twig/Bootstrap.
J'ai suivi le tutoriel : https://www.grafikart.fr/tutoriels/php/slim-framework-831
Le code est accessible en intégralité sur GitHub : https://github.com/joedu12/oriTrail-slim3

Accès à la base de données (Slim Framework 3)

Je suis dans PagesController et j'aimerais avoir l'accès à l'objet PDO

class PagesController extends Controller {
    public function getLieu(RequestInterface $request, ResponseInterface $response) {
        // ce code plante :
        $lieux = $this->$database->query('SELECT * FROM Lieu');
        var_dump($lieux);

        $this->render($response, 'pages/lieu.twig');
    }
}

Pourtant l'accès à la base de données dans la classe parente fonctionne :

class Controller {
    private $container;

    public function __construct($container) {
        $this->container = $container;
        // ce code fonctionne :
        $database = $this->container->get('db');
        $lieux = $database->query('SELECT * FROM Lieu');
        var_dump($lieux);
    }

    public function render(ResponseInterface $response, $file) {
        $this->container->view->render($response, $file);
    }
}

Ce que je veux

Accéder à la base de données dans la classe fille.

Ce que j'obtiens

Undefined variable: database in /srv/http/oriTrail-slim3/app/Controllers/PagesController.php on line 25

Logique vu que $database n'existe pas, mais comment faire pour qu'il existe ?

Merci de m'avoir lu, en espérant que vous pourrez m'aider.

1 réponse


joedu12
Auteur
Réponse acceptée

J'ai eu ma réponse ; merci StackOverflow !
https://stackoverflow.com/questions/49310033/access-database-from-the-parent-class
Le problème venait du $datbase. Il ne fallait pas le "$".

D'après le message de dakis, ma méthode d'accès à la base de donnée n'est pas la meilleure ! Je vais essayer de faire mieux.