Zazwyczaj używasz grup tras do organizowania podobnych zasobów lub treści, aby widocznie zobaczyć ich związek w kodzie. Grupy tras są również przydatne, jeśli chcesz umieścić specjalne warunki, takie jak oprogramowanie pośrednie, w określonej grupie. Na przykład możesz mieć sekcję administratora w swojej witrynie i chcesz upewnić się, że użytkownik jest faktycznie administratorem przed uzyskaniem dostępu do kontrolera.
$app->get('panel/admin', 'Admin/DashboardController:index')->add($adminAuth);
$app->get('panel/admin/users', 'Admin/UserController:index')->add($adminAuth);
$app->post('panel/admin/users', 'Admin/UserController:create')->add($adminAuth);
Oczywiście rozsądniej byłoby grupować te trasy, ponieważ mają podobne cechy. Jeśli kiedykolwiek będziesz musiał zmienić coś na temat tych cech w przyszłości (jak typ oprogramowania pośredniego), wystarczy zrobić to tylko raz.
$app->group('/panel', function() use ($app) {
$app->group('/admin', function() use ($app) {
$app->get('', 'Admin/DashboardController:index');
$app->get('/users', 'Admin/UserController:index');
$app->post('/users', 'Admin/UserController:create');
})->add($adminAuth);
})->add($userAuth);
Jest to również pomocne, gdyby kiedykolwiek chcesz poszerzyć przypadku użycia tego konkretnego URI, więc powiedzmy, że chcesz rozwałkować nową funkcję w panelu że regularni użytkownicy mogą korzystać.
$app->group('/panel', function() use ($app) {
$app->group('/admin', function() use ($app) {
$app->get('', 'Admin/DashboardController:index');
$app->get('/users', 'Admin/UserController:index');
$app->post('/users', 'Admin/UserController:create');
})->add($adminAuth);
$app->get('', 'DashboardController:index');
})->add($userAuth);
Chociaż nie jest to wielką wagę, to tylko dobra praktyka, aby układ cały swój kod tak zorganizowane, jak to możliwe, a grupy tras pozwalają to zrobić.
W gruncie rzeczy ten drugi wygląda o wiele lepiej. ale jeśli oba działają, możesz chcieć zrobić to tak, jak ci się podoba, tak naprawdę nie nadaje się do pytań opinii – nonchip
@nonchip To jest to. Nie wiem, czy to zależy od opinii, czy też jest odpowiednia konwencja. – Ivan
a następnie przyjrzyj się dokumentom lub przykładowym projektom dla frameworka, a wszystko, co wydaje się być tam stosowane bardziej konsekwentnie, może być konwencją. z reguły powiedziałbym, że pierwszy przykład jest w porządku (= łatwy), jeśli utrzymujesz krótkość, ale drugi wydaje się lepiej zarządzać (zarówno z punktu widzenia optymalizacji routera, jak iz punktu widzenia programisty), więc używaj tego jeśli masz zamiar robić dużo rzeczy z książkami. – nonchip