⊗ppPmSDFl 437 of 447 menu

Tiedostopohjainen moottori PHP:ssä

Toteutamme sivustomoottorin, jonka avulla voimme luoda mallitiedoston, johon URL-osoitteesta riippuen liitetään erilaista sisältöä.

Oletetaan, että sivumme rakenne on seuraava:

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

Laitaamme paikkaan, johon sisällön pitäisi tulla, keksimämme komennon sisällön lisäämiseksi, esimerkiksi näin: {{ content }}. Muutetaan sivustomme mallipohjaa:

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

Luodaan nyt kansio view, johon aiomme sijoittaa sisältötiedostoja. Suoraan tähän kansioon tai alikansioihin.

Ensimmäinen tiedosto on tällainen:

<div> content 1 </div>

Toinen tiedosto on tällainen:

<div> content 2 </div>

Kolmas tiedosto on tällainen:

<div> content 3 </div>

Tehdään nyt niin, että URL-osoitteen perusteella haetaan vastaava tiedosto. Meidän tapauksessamme URL-osoitteella /page1 tulee ensimmäinen tiedosto, URL-osoitteella /dir/page2 - toinen, ja URL-osoitteella /dir/sub/page3 - kolmas.

Ryhdytään toteuttamaan. Aluksi tiedostossa .htaccess tehdään niin, että kaikki haetut osoitteet, paitsi resurssitiedostot, ohjataan sivulle index.php:

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

Sivulla index.php saadaan muuttujaan haettu URL:

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

Sen jälkeen saadaan mallipohjatiedoston teksti:

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

Nyt URL-osoitteen perusteella saadaan kansiosta view vastaava sisältötiedosto:

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

Korvataan mallipohjan tekstissä keksimämme komma saadulla sisällöllä:

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

Tulostetaan selaimelle mallipohjatiedosto korvatulla sisällöllä:

<?php echo $layout; ?>

Kootaan kaikki yhteen ja saadaan seuraava koodi:

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

Toteuta kuvattu tiedostopohjainen moottori.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää