Bonjour,
Voila je rencontre un petit problème avec mon code, je suis les cours de php je suis au chapitre 45 mais je rencontre des probleme a la creation de la structure du projet.
a l'instalation de altorouteur j'ai tout fait comme indiquer mais il me renvoie cette erreur ci-dessous:
Fatal error: Uncaught Error: Function name must be a string in /Applications/MAMP/htdocs/sitephp2/public/index.php:17 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/sitephp2/public/index.php on line 17
voici mon code:
require '../vendor/autoload.php';
$router = new AltoRouter();
define('VIEW_PATH', dirname(__DIR__) . '/views');
$router->map('GET', '/blog', function () {
require VIEW_PATH . '/post/index.php';
});
$router->map('GET', '/blog/category', function () {
require VIEW_PATH . '/category/show.php';
});
$match = $router->match();
$match['target']();
cela fait maintenant plus de 2 semaine que je bloque Merci d'avance pour vos reponse.
Tu appelles un objet comme si c'était une fonction.
Tu dois donc utiliser une méthode native pour appeler la bonne méthode.
Voici le bout de code par lequel tu dois remplacer ton $match['target']()
:
if( is_array($match) && is_callable( $match['target'] ) ) {
call_user_func_array( $match['target'], $match['params'] );
} else {
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}
suffit de lire la doc
$router = new AltoRouter();
// map homepage
$router->map( 'GET', '/', function() {
require __DIR__ . '/views/home.php';
});
// map user details page
$router->map( 'GET', '/user/[i:id]/', function( $id ) {
require __DIR__ . '/views/user-details.php';
});
// match current request url
$match = $router->match();
// call closure or throw 404 status
if( is_array($match) && is_callable( $match['target'] ) ) {
call_user_func_array( $match['target'], $match['params'] );
} else {
// no route was matched
header( $_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
}