Zgodnie z tytułem posta postaram się wyjaśnić, na czym polega idea rozdzielenia warstwy prezentacji, od warstwy logiki aplikacji. Aby dobrze zrozumieć omawiane zagadnienie, poczynię możliwe uproszczenia. Zaczynamy!
Na warstwę prezentacji składają się m.in.:
- (x)html
- css
Na warstwę logiki składają się przykładowo:
- php lub inny język
- baza danych MySQL,PostgreSQL lub inna
Zacznijmy jednak od początku. Każdy programista rozpoczynał kiedyś od pisania skryptów, w następujący sposób:
$zmienna = $_GET['id']; echo "$zmienna";
Wyobrażacie sobie poprawki w warstwie prezentacji, w przypadku tak wyglądającego kodu aplikacji? Ja sobie nie wyobrażam. Trzeba więc pomyśleć nad innym rozwiązaniem. I tu nasuwa się pomysł użycia samego php jako system szablonów. Będzie to wyglądać tak:
<?php if ($_GET['id']=>3): ?>
<h1><?php echo $_GET['id'] ?></h1>
<?php else: ?>
<?="mniejsze od 3" ?>
<?php endif; ?>
Powyższe rozwiązanie jest lepsze niż poprzednie, ale nadal prezentacja i logika umieszczane są w jednym pliku – poza tym mało czytelne. To nas nie satysfakcjonuje. Zatem przystępujemy do rozdzielenia prezentacji i logiki. I w ten sposób otrzymujemy dwa dokumenty:
view.php – widok
<?=$zmienna ?>
index.php – logika
if ($_GET['id']>3) $zmienna = $_GET['id']; else $zmienna = "mniejsze od 3"; include_once "view.php";
W widoku znajdują się teraz tylko te dane, które są niezbędne do prezentacji. Zaleta, której nie widać może na pierwszy rzut oka to fakt, iż możemy wykorzystywać wielokrotnie te same elementy strony – bez zbędnego powielania kodu (zasada Don’t Repeat Yourself). Wady? Dla osób zajmujących się frontend’em aplikacji koniecznością może okazać się znajomość podstaw php. Co dalej? Systemy szablonów takie jak SMARTY,OPT, czy Savant. W szczególności polecam SMARTY, które dają ogromne możliwości, choć prze wielu uważane są za zbyt wolne. Wybór zostawiam Wam.
1 Odpowiedź : “rozdzielenie warstw aplikacji”


Rozdzielił bym jeszcze warstwę logiki na logikę (php) i warstwę danych (sql czy inny mechanizm składowania)