Oddzielanie kodu PHP od HTML

Autor: Wojciech Jurewicz, dodano: 24-07-2003
Kategoria: Programowanie i tworzenie

Niejeden programista nie raz przeklął przeszkadzające się z kodem tagi HTML jak również niejeden projektant nie mógł dobrze pracować przez kod PHP który z powodzeniem mu przeszkadza... Ten artykuł pomaga zaradzić temu problemowi.

Wiadomo, że kod HTML przeplatający się z kodem PHP jest bardzo nie czytelny, jest sporo metod pozwalających uprościć sobie ten problem, ale każda z metod robi to w różnym stopniu. W artykule tym przedstawię kilka metod oddzielanie kodu PHP od HTML, oczywiście jedne sposoby są lepsze a inne gorsze, ale to w zależności od potrzeb.

Oto niektóre z nich, które zamierzam omówić:
- Standardowy
  - całościowy
  - wpleciony
- Implementacja
- Fast Template

Standardowy:

Sposób standardowy to nic innego jak pisanie kodu PHP i HTML w jednym, ale są dwa główne rodzaje: całościowy i wpleciony. Całościowy opiera się na wplataniu znaczników HTML w kod PHP, natomiast wpleciony na wplataniu kodu PHP pomiędzy znaczniki HTML. Kod w zapisie całościowym wygląda przykładowo tak:
 

<?php
$imie = "Jan";
$nazwisko = "Kowalski";
echo "<table>";
echo "<tr>";
echo "<td>Imię</td>";
echo "<td>Nazwisko</td>";
echo "</tr>";
echo "<tr>";
echo "<td>echo $imie</td>";
echo "<td>echo $nazwisko</td>";
echo "</tr>";
echo "</table>";
?>



dałoby to w wyniku:
 

Imię  Nazwisko
Jan   Kowalski



Natomiast kod w zapisie wplecionym wyglądałby tak:
 

<?php
$imie = "Jan";
$nazwisko = "Kowalski";
?>
<table>
<tr>
<td>Imię</td>
<td>Nazwisko</td>
</tr>
<tr>
<td><?php echo $imie ?></td>
<td><?php echo $nazwisko ?></td>
</tr>
</table>



wynik byłby identyczny:
 

Imię  Nazwisko
Jan   Kowalski



Można to także zrobić definiując wcześniej funkcje wyświetlające:
 

<?php
function wys( $co )
{
    echo ${$co};
}
$imie = "Jan";
$nazwisko = "Kowalski";
?>
<table>
<tr>
<td>Imię</td>
<td>Nazwisko</td>
</tr>
<tr>
<td><?php wys("imie"); ?></td>
<td><?php wys("nazwisko"); ?></td>
</tr>
</table>



Wynik dalej byłby identyczny:
 

Imię  Nazwisko
Jan   Kowalski



To tyle, jeśli chodzi o sposób standardowy.

Implementacja

. Polega ona na zdefiniowaniu pliku wejściowego, a następnie dołączeniu go do kodu za pomocą include() lub require(). Na przykład cały nagłówek, który jest wspólny dla całego serwisu, wraz z atrybutami meta mógłby wyglądać tak:
 

<--!head.html-->
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2">
<meta name="Keywords" content="słowa kluczowe">
<title>tytul</title>
</head>
<body>



oraz stopka:
 

<--!foot.html-->
</body>
</html>



Teraz plik z kodem:
 

<!--index.php-->
<?php
include("head.html");

//treść strony w PHP

include("foot.html");
?>



równie dobrze można dołączać kod PHP do pliku HTML (ale z rozszerzeniem PHP):
 

<!--formularz.php-->
<?php
echo "<form name=\"formularz\" action=\"$PHP_SELF\" method=\"post\">";
echo "<input type=\"text\" name=\"adres\" value=\"http://\">";
echo "<input type=\"submit\">";
echo "</form>";
?>



plik z kodem HTML wyglądał by następująco:

 

<!--index.php-->
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2">
<meta name="Keywords" content="słowa kluczowe">
<title>tytul</title>
</head>
<body>

//treść strony

<?php include("formularz.php"); ?>

//dalsza treść strony

</body>
</html>




tak się prezentuje metoda implementacji.

FastTemplate

System szablonów. Jest to bardzo efektywna a zarazem efektowna metoda, ponieważ pozwala zapisywać kod PHP w oddzielnym pliku a kod HTML w oddzielnym, tyle, że zawierający specjalne tzw. Tagi Szablonów. Jednak przygotowanie takiego systemu szablonów jest nieco trudniejsze i omówię je w oddzielnym artykule. W systemie tym plik szablonu ma zazwyczaj rozszerzenie "tpl" i jest to plik, który zawiera kod HTML z tagami szablonu. Przykładowy plik .tpl.
 

<!--example.tpl-->
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2">
<meta name="Keywords" content="słowa kluczowe">
<title>{tytul}</title>
</head>
<body>

//treść strony

Mam {moj_wiek} lat. I jestem uczniem {moja_klasa} klasy.

</body>
</html>



Tagi szablonów są zawarte pomiędzy nawiasy szaścienne "{" i "}". Do tego jest potrzebny plik, który będzie wczytywał ten szablon. W pliku tym powinna być zdefiniowana klasa, która będzie odczytywała wartości z nawiasów i odpowiednio je interpretowała. W ten sposób np. mój wiek może się zmieniać wraz z klasą bez żadnej ingerencji w zawartość strony. Dodatkową zaletą jest czytelność kodu. Gotowym i bardzo znanym systemem obsługi szablonów jest Smarty dostępny na stronie http://smarty.php.net. Jeśli kogoś interesuje ta metoda zapraszam do przeczytania artykułu na temat tego jak działają FastTemplate lub artykułu o Smarty.

Ocena 3/5 (60%) (16 głosów)

Komentarze:



    Dodaj komentarz:


    Temat:
    Twój nick:
    Komentarz:
     

    Prosimy o kulturę wypowiedzi. Komentarze zawierające niecenzuralne zwroty, bądź obrażające inne osoby będą usuwane. Kod HTML w wypowiedziach jest niedozwolony. Wydawca nie odpowiada za treść komentarzy.