PHP에서 이름 있는 매개변수를 사용한 라우팅
URL을 처리하는 정규 표현식 중 하나를 살펴보겠습니다:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
이 경우, 우리의 매개변수가 캡처 그룹에 들어가게 됩니다. 그런 다음 캡처 그룹의 번호를 사용하여 매개변수 값을 추출합니다:
<?php
$slug = $params[1];
?>
이 방법은 실제로 그다지 좋지 않습니다, 특히 매개변수가 여러 개일 경우 더욱 그렇습니다. 더 나은 아이디어는 번호 대신 이름을 가진 매개변수를 만드는 것입니다. 이를 위해 정규식에서 이름 있는 캡처 그룹을 사용하겠습니다:
<?php
if (preg_match('#^/page/(?<slug>[a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
이 경우, 매개변수 이름을 사용하여 그 값을 얻을 수 있습니다:
<?php
$slug = $params['slug'];
?>
여러분의 엔진 라우트에서 매개변수를 이름 있는 매개변수로 변경하세요.