Wiec postanowilem poszerzyc fw o nowa funkcjonalnosc, oprocz widokow jako szablony mozna uzywac klasy.
Jednak nie wiem zabardzo jak to najlepiej rozwiazac do tej pory doszedlem do 2 sposobow:
-Osobna klasa widoku na kazdy format czyli News_View_Html,News_View_Xml itp...itd...
-Jedna ogolna klasa News_View implementujaca interfejs IView ktory ma metody: renderHtml,renderXml,renderJson itp..itd
Moze pokaze pseudo kod to bedzie bardziej wiadomo o co mi chodzi:
interface IView { public function render(); } //lub interface IView { public function renderHtml(); public function renderText(); public function renderXml(); public function renderJson(); public function renderPdf(); }
I potem reszta:
<?php class News_View_Html extends Html_View implements IView { public function render() { return $this -> Layout('news', 'components', 'admin'); } } class News_View_Xml extends Xml_View implements IView { public function render() { //implemenctacja dla xml'a } } //lub jedna klasa z metodami dla kazdego typu widoku dziedziczaca po bazowej klasie view + interfejs class News_View extends View implements IView { //implementacja assign'ow public function setVars($vars) { $this -> view -> AddVars($vars); } public function renderHtml() { $this -> view -> Layout('news', 'components', 'admin'); } public function renderXml() { //implementacja dla xml'a } //potem implementacja dla text,pdf i json jesli jest potrzeba jak nie to puste metody } //klasa kontrolera class News extends Controller implements IController { public function Index() { //pobieranie news'ow z modelu //ustawiane widoku dla url index.php/Home,Index,Index,html $args = $this -> routing -> getParams(); switch($args) { case 'html': //teraz tak albo osobna klasa dla kazdego widoku albo jedna klasa ze wszystkimi metodami $view = $this -> News_View_Html; $view -> AddVars($news); return $view -> render(); //lub $view = this -> News_View; $view -> setVars($news); return $view -> renderHtml(); break; case 'xml': //tutaj to samo tylko ze w formacie xml break; } } } ?>
Kod pisany na szybko z palca wiec moze sa jakies bledy, to ma byc tylko taki ogolny zarys.
Chodzi o to ktore rozwiazanie jest lepsze, a moze zadne z nich i proponujecie inne...?