⊗ppPmSDRt 444 of 447 menu

PHP 엔진에서 간단한 라우팅

이전 강의에서는 우리 사이트에 오직 한 가지 유형의 URL만 있었습니다. 물론 일반적으로 웹사이트에는 여러 가지 유형의 주소가 있습니다.

각 주소 유형은 자체 정규 표현식으로 처리될 것이며, 이를 라우트(route)라고 합니다. 따라서 라우트와 이를 처리하는 코드를 매칭하는 과정을 라우팅(routing)이라고 합니다.

예를 들어, 우리에게 두 가지 유형의 주소가 있다고 가정해 봅시다. 각 그룹에 대해 자체 라우트를 작성해 보겠습니다:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // 슬러그별 단일 페이지 } if (preg_match('#^/page/all$#', $url, $params)) { // 모든 페이지 목록 } ?>

편의를 위해 각 라우트의 처리 코드를 별도의 파일로 분리해 보겠습니다:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } ?>

연결되는 파일들은 결과로 페이지의 타이틀과 콘텐츠가 담긴 배열을 반환해야 합니다.

슬러그별 단일 페이지를 출력하는 첫 번째 파일의 코드를 작성해 봅시다:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

이제 모든 페이지의 링크 목록을 출력하는 두 번째 파일의 코드를 작성해 봅시다:

<?php $query = "SELECT slug, title FROM pages"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'all pages', 'content' => $content ]; return $page; ?>

조건 중 하나가 실행된 후, 변수 $page에는 항상 하나의 구조에서 온 배열이 담겨 있을 것입니다. 이 배열을 사용하여 사이트 템플릿에 타이틀과 콘텐츠를 넣어 보겠습니다:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

모든 것을 합쳐서 다음 코드를 얻습니다:

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

사용자가 있는 웹사이트가 있다고 가정해 봅시다. 단일 사용자 표시 페이지, 모든 사용자 출력 페이지, 그리고 새로운 사용자 추가를 위한 폼 페이지를 만들어 보세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부