⊗ppPmSDFl 437 of 447 menu

Bestandengestuurde engine in PHP

We implementeren een website-engine die ons in staat stelt een sjabloonbestand te maken, waaraan afhankelijk van de URL verschillende inhoud wordt toegevoegd.

Laat de structuur van onze pagina er als volgt uitzien:

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

Laten we op de plaats waar de inhoud moet worden ingevoegd, een door ons bedachte opdracht voor invoeging plaatsen, bijvoorbeeld deze: {{ content }}. Laten we het sjabloon van onze website wijzigen:

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

Laten we nu een map view maken, waarin we de inhoudsbestanden plaatsen. Direct in deze map of in submapen.

Het eerste bestand zal er als volgt uitzien:

<div> content 1 </div>

Het tweede bestand zal er als volgt uitzien:

<div> content 2 </div>

Het derde bestand zal er als volgt uitzien:

<div> content 3 </div>

Laten we nu regelen dat via de URL uit de adresbalk het corresponderende bestand wordt opgehaald. In ons geval zal via de url /page1 het eerste bestand worden opgehaald, via url /dir/page2 - het tweede, en via url /dir/sub/page3 - het derde.

Laten we beginnen met de implementatie. Om te beginnen in het bestand .htaccess zorgen we ervoor dat alle aangevraagde adressen, behalve resourcebestanden, worden doorgestuurd naar de pagina index.php:

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

Op de pagina index.php halen we de aangevraagde URL op in een variabele:

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

Vervolgens halen we de tekst van het sjabloonbestand op:

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

Nu halen we via de URL uit de map view het corresponderende inhoudsbestand op:

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

Vervangen we in de sjabloontekst onze bedachte opdracht door de opgehaalde inhoud:

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

We geven het sjabloonbestand met de ingevoegde inhoud weer in de browser:

<?php echo $layout; ?>

Laten we alles samenvoegen en we krijgen de volgende code:

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

Implementeer de beschreven bestandengestuurde engine.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren