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
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);
}
}
Accéder à la base de données dans la classe fille.
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.
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.