![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 1 Dołączył: 15.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
W jednym za artykułów przeczytałem o takim tworzeniu widoku:
Kod class WebPage{ private $pageController; private $controllerStyle; private $page=''; public function __construct(PageController $pageController){ $this->pageController=$pageController; $this->controllerStyle=$pageController->getStyle(); } public function doHeader(){ $this->page='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" href="defaultstyle.css" type="text/css" /><title>Sample Web Page</title></head>'; } public function doBody(){ $this->page.='<body><div id="header"><h1>Header section</h1></div><div id="navbar"><ul><li><a href="#" title="Link 1">Link 1</a></li><li><a href="#" title="Link 2">Link 2</a></li><li><a href="#" title="Link 3">Link 3</a></li><li><a href="#" title="Link 4">Link 4</a></li><li><a href="#" title="Link 5">Link 5</a></li><li><a href="#" title="Link 6">Link 6</a></li></ul></div><div id="leftcol"><h1>Left column</h1></div><div id="centercol"><h1>Center column</h1></div><div id="rightcol"><h1>Right column</h1></div>'; } public function doFooter(){ $this->page.='<div id="footer"><h1>Footer section</h1></div></body></html>'; } public function getPage(){ return $this->page; } public function getControllerStyle(){ return $this->controllerStyle; } } Czy tak powinno się tworzyć klasy widoku czy jest na to może inny lepszy sposób? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Warstwa prezentacji dzieli się moim zdaniem na dwa etapy:
1. Logika prezentacji 2. Treść widoku Pierwszy to właśnie jakaś klasa View, z której wyprowadza się pochodne HtmlView, XmlView itd. Dostarcza metody takiej jak np, setTitle(), setMetaTag() My jednak nie koniecznie używamy ich sami O ile to możliwe, powinien sie tym zająć jakiś ViewManager, który po konsultacji z wpisami w konfiguracji, wypełni je automatycznie. Oczywiście powinniśmy mieć możliwość zmiany tych ustawień w dowolnym momencie (przed samym procesem generowania rzecz jasna). Tu kwestia istotna - systemy takie jak np. Smarty, czy OPT nie należą do logiki prezentacji - one obsługują treść widoku, a więc sam szablon, do którego podstawia się dane. Treść widoku, to jak przed chwila wspomniałem - szablon, najlepiej pasywny, czyli taki, który nie komunikuje się z resztą systemu (ale lepiej mieć możliwość - na wszelki wypadek), a jedynie wyświetla przekazane mu przez logikę prezentacji dane. Czy to będą obiekty, ich kolekcje, czy typy proste - nie ma znaczenia. Gdzie tu miejsce na Smarty? To proste - HtmlView wybiera typ renderingu strony, albo zostaje mu narzucony przez konfigurację (za pośrednictwem ViewManagera) O, jeszcze obrazek - tylko sie nie czepiajcie szczegółów, bo robiłem na szybko (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam. (IMG:http://img294.imageshack.us/img294/929/woooot2.png) Aha, żeby nie było - wiem, że tekst i obrazek nie pokrywają się, ale siła i kierunek powiązań między klasami bywają różne. Ważni są uczestnicy procesu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 07:00 |