Lekcja 4 – MVC – Model [model]

Kategoria: Kurs pisania komponentów dla Joomla 1.5 [MVC] Utworzono: czwartek, 15, maj 2008 Opublikowano: czwartek, 15, maj 2008 Wojciech Romanek Drukuj E-mail

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ędę 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.

Odsłony: 14936