Bonjour à tous, je viens demander de l'aide Svp, car je galère à finir mon router pour un frameworks MVC maison.
Mon router fonctionne avec 2 classes (mais je vais ajouter une 3è classe pour les routeGroup) : une classe "Router", et une classe "Route". Elles font entre 150 et 200 lignes de code chaqune, donc je ne vais peut être pas balancer tout le code ici. Je pense que c'est surtout une aide théorique que j'ai besoin, après pour le codage, j'essayerai de me débrouiller tout seul.
Actuellement mon router fonctionne pour des routes comme ceci :
1 2 3 4 5 6 7 8 9 10 11 | <?php $router->get( '/contact', 'App\Controllers\Pages\ContactController@getContact', 'contact' ); $router->post( '/contact', 'App\Controllers\Pages\ContactController@postContact' ); |
Mais j'aimerai bien ajouter des routesGroup. Par exemple pour les routes de mon admin, j'aimerai remplacer ceci:
1 2 3 4 5 6 7 8 9 10 11 | <?php $router->get( '/admin/edit/{id}', 'App\Controllers\Admin\ArticleController@edit', 'admin_article_edit' ); $router->post( '/admin/edit/{id}', 'App\Controllers\Admin\ArticleController@update' ); |
Par ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $router->group('/admin', function() { $router->get( '/edit/{id}', 'App\Controllers\Admin\ArticleController@edit', 'admin_article_edit' ); $router->post( '/edit/{id}', 'App\Controllers\Admin\ArticleController@update' ); }); |
Mais je galère.
Donc dans ma classe Router, j'ai commencé par ajouter cette function :
1 2 3 4 5 6 | <?php public function group($path, $callable) { $group = new RouteGroup($path, $callable); $this->routeGroups[] = $group; } |
Et j'ai donc créé une 3ème classe "RouteGroupe", qui pour le moment contient ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php /** * Fonctionne avec la classe Router * Permet de représenter un routeGroup */ class RouteGroup { private $path; // chemin du group (préfix avant les routes) private $callable; // closure avec function anonyme public function __construct($path, $callable) { $this->path = trim($path, '/'); $this->callable = $callable; var_dump($this->path); var_dump($this->callable); } } // END class |
Et je ne sais pas trop quoi faire ensuite. Les var_dump m'affichent ceci:
1 2 3 4 | <?php _ var_dump($this->path) : C:\wamp64\www\MVC\core\Routing\RouteGroup.php:23:string 'bbb' (length=3) _ var_dump($this->callable) : C:\wamp64\www\MVC\core\Routing\RouteGroup.php:24: object(Closure)[4] |
Je pense que la 1ère étape, serai que je parcours les routes qui sont dans ma function anonnye de group(), (donc ce qu'il y a dans $this->callable). Comment puije-faire ceci SVP ?
Merci beaucoup.