📚 PHP 중급 - 7주차: MVC 패턴의 이해 및 적용- 03 URL 라우팅 기초

2025. 8. 11. 13:09프로그램/PHP 중급

📚 PHP 중급 - 7주차: MVC 패턴의 이해 및 적용- 03 URL 라우팅 기초

📚 PHP 중급 - 7주차: MVC 패턴의 이해 및 적용- 03 URL 라우팅 기초

#URL 라우팅이란?

#웹 개발에서 #URL 라우팅은 사용자가 특정 #URL을 요청했을 때, 해당 #요청을 어떤 #컨트롤러 또는 #함수로 연결할지 결정하는 과정입니다. 이는 #MVC(#Model-View-Controller) #패턴에서 #요청을 처리하는 핵심적인 부분이며, #애플리케이션의 구조를 깔끔하게 유지하는 데 도움을 줍니다.


#기본적인 라우팅 원리

가장 간단한 형태의 라우팅은 들어오는 모든 #URL #요청을 하나의 #PHP #파일(예: index.php)로 집중시키는 것입니다. 이 파일을 **"프론트 컨트롤러(Front Controller)"**라고 부릅니다. 이 파일은 요청된 #URL을 분석하여 적절한 #로직을 실행합니다.


#라우팅 규칙 만들기

우리는 #URL을 분할하여 #라우팅 #규칙을 만들 수 있습니다. 예를 들어, /products/123이라는 #URL이 들어왔다고 가정해 봅시다. 이 #URL은 다음과 같이 해석될 수 있습니다.

  • 첫 번째 부분 (/products): #컨트롤러 또는 #모듈을 나타냅니다.
  • 두 번째 부분 (/123): #동작(#Action) 또는 #매개변수를 나타냅니다.

이를 통해 products #컨트롤러의 show #메서드를 호출하고, 123을 #매개변수로 전달하도록 만들 수 있습니다.


#URL 라우팅 구현 예제

간단한 #URL 라우팅을 구현해 보겠습니다. 먼저 .htaccess 파일을 사용하여 모든 #요청을 index.php로 보내도록 설정합니다.

.htaccess 파일

Apache
 
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

위 코드는 실제 존재하는 #파일이나 #디렉터리가 아닐 경우 모든 #요청을 index.php로 전달합니다.

 

index.php 파일

PHP
 
<?php
// 요청된 URL을 가져옵니다.
$request_uri = $_SERVER['REQUEST_URI'];

// URL을 / 기준으로 분할합니다.
$uri_segments = explode('/', trim($request_uri, '/'));

// 라우팅 로직 시작
$controller_name = 'home';
$action_name = 'index';
$params = [];

if (!empty($uri_segments[0])) {
    $controller_name = $uri_segments[0];
}

if (!empty($uri_segments[1])) {
    $action_name = $uri_segments[1];
}

if (count($uri_segments) > 2) {
    $params = array_slice($uri_segments, 2);
}

// 예제용 컨트롤러 호출
$controller_class = ucfirst($controller_name) . 'Controller';
$controller_file = 'controllers/' . $controller_class . '.php';

if (file_exists($controller_file)) {
    require_once $controller_file;
    $controller = new $controller_class();
    if (method_exists($controller, $action_name)) {
        call_user_func_array([$controller, $action_name], $params);
    } else {
        echo "404 Not Found: Action '{$action_name}' not found.";
    }
} else {
    echo "404 Not Found: Controller '{$controller_class}' not found.";
}

?>

위 예제는 #URL의 첫 번째 부분을 #컨트롤러 이름으로, 두 번째 부분을 #메서드 이름으로 매핑하는 간단한 #라우팅 #로직을 보여줍니다.


#정리

#URL 라우팅은 #MVC #패턴의 중요한 요소로서, #URL과 #애플리케이션 #로직을 분리해주는 역할을 합니다. 이를 통해 #코드의 유지보수성과 확장성이 크게 향상됩니다. 이 예제를 통해 기본적인 #라우팅의 원리를 이해하고, 더 복잡한 #프레임워크의 라우팅 시스템에 대한 기반을 다질 수 있습니다.

 

 

 

블로그KT고정, 쇼핑/지도 마케팅KT유동, 게임/앱플레이어 고정IP, 24시간상담 대량구매 시 할인혜택 제공!

https://xn--299ao67b9qbmsf04c.net/

 

VPN 5,500원 / IP교체 1,100원 / 유동프록시 22,000원 | LuzenVPN 루젠VPN

국내최저가 고정IP서비스,유동프록시(IP4000개이상제공),PPTP,L2TP,IPSec,OpenVPNVPN,통신사VPN,VPN프로그램,고정IP,고정아이피,PPTP,저렴한VPN,리니지MVPN,리니지VPN,아이온VPN,던파VPN,유동프록시,유동PROXY,바이

vpn.luzensoft.com