Hallo,
Ik heb een eigen router class in php gemaakt. De router class include ik op de index.php waar ik ook alle routes toevoeg. Bijvoorbeeld zo <?php $route->add('/product/\d+', function(){ require_once 'pages/product.php' }) ?>
Ook heb ik een Model class voor al mijn database queries. Zoals in de code te zien, zie je dat ik het model object aanroep. Hoe kan het dat als ik het model object oproep doormiddel van <?php $model = new Model(); ?> Dat ik de $model variabel niet kan gebruiken in bijvoorbeeld een bestand wat ik met die router functie require?
<?php
require_once 'classes/route.php';
require_once 'classes/config.php';
require_once 'classes/model.php';
require_once 'functions.php';
require_once 'classes/validator.php';
$route = new Route();
$db = new Db();
$model = new Model();
$route->add('/', function(){
require_once 'pages/home.php';
});
$route->add('/tapijten', function(){
require_once 'pages/products.php';
});
$route->add('/product/\d+', function($model){
require_once 'pages/product.php';
});
$route->add('/contact', function(){
require_once 'pages/contact.php';
});
$route->add('/admin', function(){
require_once 'pages/admin.php';
});
$route->add('/login', function(){
require_once 'pages/test.php';
});
$route->submit();
?>
In de product.php wat ik dus require in de index.php wil ik een query oproepen doormiddel van het $model variabel.
<?php
require_once 'inc/header.php';
$uri = $_SERVER['REQUEST_URI'];
$pin = explode('/', $uri);
$id = $pin[3];
$product = $model->selectById($id, 'carpet');
$product = $product->fetch(PDO::FETCH_ASSOC);
?> Het werkt alleen als ik bijvoorbeeld $model = new Model(); opnieuw aanroep. Wat ik dus gek vind omdat ik dat dus al in het hoofd bestand doe.
4.062 views