⊗ppPmSDFl 437 of 447 menu

Filbasert motor i PHP

Vi skal implementere en nettsidemotor som vil tillate oss å lage en mal-fil, der ulikt innhold vil bli tilkoblet avhengig av URL-en.

La strukturen på siden vår se slik ut:

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

La oss på det stedet der innholdet skal settes inn, plassere en oppdiktet kommando for innsetting, for eksempel slik: {{ content }}. La oss endre mallen for nettsiden vår:

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

La oss nå lage en mappe view, der vi skal plassere innholdsfilene. Enten direkte i denne mappen eller i undermapper.

Den første filen vil være slik:

<div> innhold 1 </div>

Den andre filen vil være slik:

<div> innhold 2 </div>

Den tredje filen vil være slik:

<div> innhold 3 </div>

La oss nå sørge for at den korresponderende filen hentes fra view-mappen basert på URL-en i adresselinjen. I vårt tilfelle vil den første filen hentes for URL-en /page1, den andre for URL-en /dir/page2, og den tredje for URL-en /dir/sub/page3.

La oss starte implementeringen. Først, i filen .htaccess, skal vi sørge for at alle forespurte adresser, bortsett fra ressursfiler, omdirigeres til siden index.php:

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

På siden index.php henter vi den forespurte URL-en inn i en variabel:

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

Deretter henter vi teksten fra mal-filen:

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

La oss nå hente den korresponderende innholdsfilen fra view-mappen basert på URL-en:

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

La oss erstatte kommandoen vi fant på i malteksten med innholdet hentet fra filen:

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

La oss sende ut mal-filen med det innsatte innholdet til nettleseren:

<?php echo $layout; ?>

La oss sette alt sammen og få følgende kode:

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

Implementer den filbaserte motoren som beskrevet.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis