Bez obslugi bledow, bez pojedynczych instancji, prosty kod zeby sie przekonac czy dobrze rozumuje itd. Narazie sie bawie...
Zerknijcie okiem i napiszcie cos od siebie. Dzieki z gory za wszelkie uwagi!
<?php /** * Interfejs kontrolera - kazdy niech ma metode ustawiania widoku */ interface Controller { public function setView($viewName); } /** * Interfejs widoku - kazdy niech ma metode wyswietlania */ interface View { public function display(); } /** * Klasa widoku produktu z zaimplementowanym interfejsem widoku */ class ProductView implements View { public function setVar($varName, $varValue = false){ $this->vars[$varName] = $varValue; } public function display(){ foreach($this->vars AS $varName => $varValue){ } } } /** * Klasa pojedynczego produktu */ class Product { protected $title; protected $price; public function setTitle($title){ $this->title = $title; } public function setPrice($price){ $this->price = $price; } public function getTitle(){ return $this->title; } public function getPrice(){ return $this->price; } } /** * Klasa kontrolera produktow korzysta z klasy Product i implementuje interfejs k
ontrolera * Wywolanie akcji addProduct powoduje ustawienie title, price, widoku ProductVie
w i wyswietlenie danych */ class ProductController extends Product implements Controller { private $viewObj; public function addProduct($title, $price){ $this->setTitle($title); $this->setPrice($price); $this->setView('ProductView'); $this->viewObj->setVar($this->getTitle(), $this->getPrice()); $this->execView(); } public function setView($viewName){ $this->viewObj = new $viewName; } public function execView(){ $this->viewObj->display(); } } /** * Tu powinien byc jakis front controller ktory wywola akurat kontroler produktow
ale do tego jeszcze nie doszedlem */ $o = new ProductController; $o->addProduct('Nazwa 1', '44.99'); ?>