⊗ppPmSDFl 437 of 447 menu

PHP 파일 기반 엔진

URL에 따라 다양한 콘텐츠가 연결되는 템플릿 파일을 만들 수 있는 사이트 엔진을 구현하겠습니다.

우리 페이지의 구조가 다음과 같다고 가정해 보겠습니다:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> content </main> <header> footer </header> </body> </html>

콘텐츠가 삽입되어야 하는 위치에 우리가 만든 어떤 삽입 명령어를, 예를 들어 {{ content }}와 같이 삽입해 보겠습니다. 사이트 템플릿을 다음과 같이 변경합니다:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> {{ content }} </main> <header> footer </header> </body> </html>

이제 콘텐츠 파일을 배치할 view 폴더를 만듭니다. 이 폴더 내부나 하위 폴더에 바로 배치합니다.

첫 번째 파일은 다음과 같습니다:

<div> content 1 </div>

두 번째 파일은 다음과 같습니다:

<div> content 2 </div>

세 번째 파일은 다음과 같습니다:

<div> content 3 </div>

이제 주소 표시줄의 URL에 따라 해당 파일이 불러와지도록 해보겠습니다. 우리의 경우 URL /page1에서는 첫 번째 파일, URL /dir/page2에서는 두 번째 파일, 그리고 URL /dir/sub/page3에서는 세 번째 파일이 불러와집니다.

구현을 시작해 보겠습니다. 먼저 .htaccess 파일에서 리소스 파일을 제외한 모든 요청된 주소가 index.php 페이지로 리디렉션되도록 합니다:

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$ RewriteRule .+ index.php

index.php 페이지에서 변수에 요청된 URL을 가져옵니다:

<?php $url = $_SERVER['REQUEST_URI']; ?>

그런 다음 템플릿 파일의 텍스트를 가져옵니다:

<?php $layout = file_get_contents('layout.php'); ?>

이제 URL을 기반으로 view 폴더에서 해당 콘텐츠 파일을 가져옵니다:

<?php $content = file_get_contents('view' . $url . '.php'); ?>

템플릿 텍스트에서 우리가 만든 명령어를 파일에서 가져온 콘텐츠로 바꿉니다:

<?php $layout = str_replace('{{ content }}', $content, $layout); ?>

템플릿이 삽입된 템플릿 파일을 브라우저에 출력합니다:

<?php echo $layout; ?>

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

<?php $url = $_SERVER['REQUEST_URI']; $layout = file_get_contents('layout.php'); $content = file_get_contents('view' . $url . '.php'); $layout = str_replace('{{ content }}', $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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부