현재 위치: > 최신 기사 목록> parse_url을 사용하여 간단한 라우팅 분배 분석을 수행하십시오

parse_url을 사용하여 간단한 라우팅 분배 분석을 수행하십시오

gitbox 2025-05-26

웹 응용 프로그램을 개발할 때 라우팅 시스템의 기능은 사용자가 요청한 URL을 해당 컨트롤러 및 메소드로 구문 분석하는 것입니다. Laravel 및 Symfony와 같은 최신 프레임 워크에는 강력한 라우팅 시스템이 내장되어 있지만 가벼운 프로젝트 또는 학습 단계에는 PHP와 함께 제공되는 Parse_url 기능을 사용하여 간단한 라우팅 분포 메커니즘을 구현할 수도 있습니다.

이 기사는 Parse_url 및 일부 문자열 처리 기능을 사용하여 간단한 URL 라우팅 해상도 시스템을 구축하는 방법을 소개합니다.

1. parse_url의 기본 사용

parse_url 은 PHP의 내장 기능으로, 체계, 호스트, 경로, 쿼리 등과 같은 구성 요소로 URL을 분해하는 데 사용됩니다. 예제는 다음과 같습니다.

 $url = 'https://gitbox.net/user/profile?id=42';

$parts = parse_url($url);

print_r($parts);

산출:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /user/profile
    [query] => id=42
)

출력에서 볼 수 있듯이 Parse_url은 URL의 경로와 쿼리를 정확하게 얻는 데 도움이 될 수 있습니다. 이는 라우팅 해상도를 구현하는 데 필요한 핵심 부분입니다.

2. 기본 라우팅 시스템을 구축하십시오

다음과 같은 URL을 지원하는 간단한 라우팅 시스템을 작성해 봅시다.

 https://gitbox.net/controller/action/param1/param2

우리는 컨트롤러동작 의 이름에 따라 해당 메소드를 호출하고 후속 매개 변수를 전달하기를 희망합니다.

1. 현재 요청의 URL을 받으십시오

PHP 응용 프로그램이 URL 재 작성을 지원하는 서버에 배포되었다고 가정하면 $ _server [ 'request_uri'] 를 통해 현재 요청 경로를 얻을 수 있습니다.

 $requestUri = $_SERVER['REQUEST_URI'];

2. 쿼리 문자열을 제거하고 경로를 구문 분석하십시오

 $path = parse_url($requestUri, PHP_URL_PATH);

// 시작과 끝 슬래시를 제거하십시오,슬래시로 분할
$segments = explode('/', trim($path, '/'));

3. 해당 컨트롤러 및 메소드에 배포하십시오

 $controller = !empty($segments[0]) ? ucfirst($segments[0]) . 'Controller' : 'HomeController';
$action = isset($segments[1]) ? $segments[1] : 'index';
$params = array_slice($segments, 2);

4. 샘플 컨트롤러 클래스

 class UserController {
    public function profile($id = null) {
        echo "User profile page. ID: " . htmlspecialchars($id);
    }
}

5. 컨트롤러 및 메소드를 호출하십시오

 if (class_exists($controller)) {
    $instance = new $controller();
    if (method_exists($instance, $action)) {
        call_user_func_array([$instance, $action], $params);
    } else {
        http_response_code(404);
        echo "이 방법은 존재하지 않습니다:$action";
    }
} else {
    http_response_code(404);
    echo "컨트롤러가 존재하지 않습니다:$controller";
}

3. 테스트 예제

다음 주소에 액세스한다고 가정합니다.

 https://gitbox.net/user/profile/42

구문 분석 변수는 다음과 같습니다.

 $controller = 'UserController';
$action = 'profile';
$params = ['42'];

산출:

 User profile page. ID: 42

4. 결론

parse_url 기능을 탐색Call_user_func_array 와 결합하면 매우 간단한 코드로 가벼운 라우팅 분배 메커니즘을 빠르게 구축 할 수 있습니다. 복잡한 응용 프로그램의 요구를 충족시킬 수는 없지만 간단한 API 인터페이스를 배우고 구축하기에 충분합니다. 후속 개발에서는 정기적 인 매칭, 기본 매개 변수, 오류 처리 및 네임 스페이스 지원을 추가하여 시스템을보다 완벽하게 만들 수 있습니다.