Dziękuję za wszelkie dotacje.
| Lekcja 4 – MVC – Model [model] |
| Wpisany przez Wojciech Romanek | |||
| czwartek, 15 maja 2008 22:21 | |||
|
W dzisiejszym artykule postaram się dość zwięźle i szybko przedstawić Wam kolejną warstwę wzorca projektowego jakim jest MVC. Oczywiście warstwa ta będzie przedstawiona na przykładzie z poprzednich lekcji tzn. komponentu dla Joomla 1.5 Model będzie odrębnym plikiem php przechowywanym w katalogu models w głównym katalogu komponentu. Nazwa pliku php będzie dowolna z tą jednak zasadą jak w przypadku widoków, że jeśli chcemy utworzyć jakiś model domyślny dla widoku nazywamy go tak samo jak nasz widok. Ogólny szablon modelu będzie wyglądał następująco: <?php defined('_JEXEC') or die(); jimport( 'joomla.application.component.model' ); class NazwaKomponentuModelNazwaModelu extends JModel { function JakasFunkcja() { return jakaś wartosc; } } ?> Jak na pewno zauważyliście ciało modelu nie różni się zbytnio od widoku. Jedyna różnica to ładowana biblioteka joomla.application.component.model oraz nazwa klasy, która składa się z NazwyKomponentu – chyba nie muszę komentować, w naszym przypadku z poprzednich lekcji będzie to Witaj. Następnie słowo kluczowe (w rozumieniu pisania komponentów dla Joomla) Model, po którym wpisujemy nazwę Modelu (taka sama jak nazwa pliku bez php). W takim razie źródło naszego przykładowego modelu będzie wyglądać tak: <?php defined('_JEXEC') or die(); jimport( 'joomla.application.component.model' ); class WitajModelWitaj extends JModel { function pobierzDane() { $dane = "Jakis przykładowy tekst!"; return $dane; } } ?> W module tym zaimplementowałem prostą funkcję która zwraca napis ze zmiennej $dane. Oczywiście funkcji może być więcej i mogą zwracać różne dane, nas będą interesować informacje z bazy danych których obsługa jest równie prosta jak tworzenie modelu! Joomla udostępnia nam gotowe klasy i funkcje które należy odpowiednio wykorzystać. No cóż, ale koniec tego wywodu miało być krótko. Mamy gotowy model. Jak więc teraz wykorzystać funkcje w nim zawarte? Musimy zmodyfikować nasz widok, który teraz będzie wyglądał tak: <?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view'); class WitajViewWitaj extends JView { function display($tpl = null) { $model =& $this->getModel(); $dane = $model->pobierzDane(); $this->assignRef( 'mojedane', $dane ); parent::display($tpl); } } ?> Tutaj dużo nie będe tłumaczył ponieważ widok był opisany w poprzedniej lekcji. Nowością jest tutaj: $model =& $this->getModel(); funkcja ta przypisuje zmiennej $model instancję naszego modelu (jeśli nie podamy parametru to szukany jest model o nazwie takiej jak nazwa widoku). Jeśli chcemy załadować inny model o nazwie np. test funkcję wywołujemy następująco: $innyModel =& $this->getModel('test'); Następna linia to $dane = $model->pobierzDane(); która zmiennej $dane przypisuje wynik działania funkcji pobierzDane() którą zaimplementowaliśmy w naszym modelu. Reszta kodu była opisana w poprzediej lekcji. Myślę że na chwilę obecną wystarczy tyle informacji, w następnej lekcji prawodpodobnie napiszę o pobieraniu danych z baz danych. Tak więc zapraszam do ponownych odwiedzin i oczywiście głosowania w ankiecie. Jeśli chcesz się przyczynić do szybkości powstawania artykułów proszę rozpowszechniaj adres tej strony, zwiększony ruch motywuje mnie do tworzenia kolejnych lekcji.
|