Пишу систему роутеров, есть такой код (проверка url):
if (preg_match_all(
'#^'.$uri.'$#', $currentUrl, $matches, PREG_SET_ORDER
)) {
$matches['call'] = $v['call'];
$matches['middleware'] = $v['middleware'];
echo '<pre>';
print_r($matches);
}
Если у меня указано больше 1го роутера:
Route::get('/', '\app\controllers\index\MainController@methodName');
Route::get('/url', '\app\controllers\index\MainController@methodName');
, то результат ($matches) будет пустым если будет использован не последний роутер. То есть, если я использую /url - все корректно работает, если / - в $matches пустота.
Ниже этого условия так же есть print_r($matches) Если указанно больше 1го роутера, то в условие (if (preg_match...) print_r($matches) - содержит информацию для любого url (если совпадает), а print_r($matches) который уже ниже условия - не содержит информации.
То есть: Если указанно больше 1го роутера, то $matches содержит информацию в if () , ниже - нету.
Array
(
[0] => Array
(
[0] => url
)
)
// второй print_r
Array
(
)
Не внимательный я:с
Не сделал break;
Альтернативный вариант :
$uri = '\app\controllers\index\MainController@methodName';
$route = explode('\\', trim($uri, '\\'));
echo '<pre>'; var_dump($route); echo '</pre>';
/*
array(4) {
[0]=>
string(3) "app"
[1]=>
string(11) "controllers"
[2]=>
string(5) "index"
[3]=>
string(25) "MainController@methodName"
}
*/
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости