⊗ppPmSDFl 437 of 447 menu

Souborový engine v PHP

Implementujeme engine webu, který nám umožní vytvořit soubor šablony, ke kterému bude v závislosti na URL připojen různý obsah.

Nechť struktura naší stránky vypadá následovně:

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

Pojďme na místo, kde má dojít k vložení obsahu, vložit nějaký námi vymyšlený příkaz pro vložení, například takovýto: {{ content }}. Upravme šablonu našeho webu:

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

Vytvořme nyní složku view, do které budeme umisťovat soubory s obsahem. Přímo do této složky nebo do podsložek.

První soubor bude takový:

<div> content 1 </div>

Druhý soubor bude takový:

<div> content 2 </div>

Třetí soubor bude takový:

<div> content 3 </div>

Pojďme nyní zařídit, aby se podle URL z adresního řádku načetl příslušný soubor. V našem případě na URL /page1 bude první soubor, na URL /dir/page2 - druhý, a na URL /dir/sub/page3 - třetí.

Pusťme se do implementace. Nejprve v souboru .htaccess zaříďme, aby všechny požadované adresy, kromě souborů zdrojů, byly přesměrovány na stránku index.php:

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

Na stránce index.php získáme do proměnné požadované URL:

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

Poté získáme text souboru se šablonou:

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

Nyní podle URL získáme ze složky view příslušný soubor s obsahem:

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

Nahradíme v textu šablony námi vymyšlený příkaz na získaný obsah ze souboru:

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

Vypíšeme do prohlížeče soubor šablony s dosazeným obsahem:

<?php echo $layout; ?>

Spojíme vše dohromady a získáme následující kód:

<?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; ?>

Implementujte popsaný souborový engine.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout