|
Manual
1. PodręcznikPostaram się opisać cały proces tworzenia własnych modułów, korzystania z bazy danych i innych zewnętrznych bibliotek. 1.1. Opis systemuNa początku warto zapoznać się z opisem systemu NCMS'a. Wyjaśnię kilka spraw, z którymi trzeba się zapoznać przed przystąpieniem do pisania przy użyciu tego systemu. Implementacja jest zupełnie inna, przez co może być mało optymalna i profesjonalna, jednak starałem się wzorować na dobrze ocenianych bibliotekach i sposobach implementacji różnych rozwiązań. NCMS napisany został obiektowo, co nie znaczy, iż nie znajdziemy tam elementów programowania strukturalnego. Można to zauważyć już podczas analizowania pliku core.php, gdzie wykonywane są operacje pozwalające na start i załadowanie potrzebnych komponentów. Należy także pamiętać, iż niektóre klasy zostały napisane inaczej, niż jest to wskazane w tej dokumentacji z uwagi na brak późniejszego wykorzystywanie tego kodu w innych klasach. Uwagi do ustawień projektu W katalogu Biblioteka istnieje plik konfiguracyjny, w którym należy zmienić dane dostępu do bazy danych oraz fizyczne położenie projektu na dysku. NCMS korzysta z pliku .htaccess do obsługi mod rewrite. Dlatego system może działać tylko wywołany bezpośrednio bez podawania katalogu - np. http://localhost (chyba, że odpowiednio go zmodyfikujemy) 1.2 Działanie systemuDziałanie systemu jest bardzo proste. System po wpisaniu adresu np. http://przykl.ad/strona1/podstrona wyszuka w bazie danych czy istnieje taka strona. Jak żądana strona nie istnieje to następuje przekierowanie na stronę błędu 404. Następnie system ładuje moduły, które połączone są z tą stroną. Zwraca uwagę na kolejność ich załączania i kolejno wykonuje kod w modułach. Na końcu renderuje szablony załączone do modułów i wstawia je w główny szablon strony. 1.2.1 Moduły - co to takiego?Modułem można nazwać klasę, która odpowiedzialna będzie za dany blok na stronie www. Przykładowo może to być klasa odpowiedzialna za wyświetlenie wszystkich aktualności, a po podaniu parametru tylko tej konkretnej. Kolejnym modułem mogą być komentarze do aktualności. Moduł, jako używane przeze mnie pojęcie wykonuje czynności logiczne, oraz ładuje odpowiedni szablon do wyświetlenia wykonanych operacji. Modułu znajdują się w katalogu Modul. 1.2.2 SzablonyAby oddzielić logikę od prezentacji używam szablonów Smarty, które cechuje własny język oraz możliwość cachowania wyników. Szablony umiejscowione są w katalogu Szablon. Szablony dzielimy na:
1.2.3 HelperJest to klasa pomocnicza. Podczas pisania modułu tworzymy taka klasę, jeżeli wiemy, iż część pisanego przez nas kodu może być używana w innych modułach. Jest to o tyle dobre rozwiązanie, jak potrzebujemy skorzystać np. z możliwości wyciągnięcia listy aktualności. Używamy tego w panelu administratora oraz na froncie do ich wyświetlenia. 1.2.4 MapperMapper pełni tutaj dwojaką rolę. Jest modelem - czyli odwzorowuje komórki danej tabeli i mapperem - czyli obsługuje metody pozwalające na zapisywanie, usuwanie, dodawanie danych. W aktualnej wersji NCMS'a nie został zaimplementowany żaden mapper (zostaje on tworzony automatycznie tak jak i model - dopiero rozszerzając klasę mappera standardowego możemy napisać niestandardowy mapper), dlatego dalej w dokumentacji nic nie będzie na jego temat napisane. 1.2.5 Struktura plikówW NCMS ustanowiłem hierarchie przechowywania danych i klas ustawiłem w sposób następujący.
1.3 Przedstawienie encji
1.4 Pisanie modułówTen rozdział poświecę na opisanie krok po kroku jak tworzymy moduły i jak dołączamy je do strony. Zapraszam do lektury. 1.4.1 Tworzenie klasyKlasy, które mają być modułami, tworzymy w folderze Modul. Moduły tworzymy dla frontendu i backendu oddzielnie. Dla przykładu chcemy stworzyć moduł rejestracji użytkownika. Dlatego, aby u strukturyzować nasz projekt tworzymy katalogi odpowiadające takiej ścieżce: Modul\Front\Uzytkownik\. W tak przygotowanym folderze zakładamy nową klasę. Tutaj warto dodać, że klasa musi mieć rozszerzenie .class.php, aby została załączona poprawnie przez autoloader'a.
public function inicjalizuj() {
$this->tytul = 'Lista modułów';
1.4.2 Metoda inicjalizujMetoda inicjalizuj wykonywana jest po inicjalizacji komponentu przez kontroler, ale przed wczytaniem danych do szablonu. Metoda ta może, tak jak w przykładzie wyżej, zawierać przekierowania w zależności od parametru przekazanego do podpiętego modułu. Dla powyższego przykładu wywołanie samego modułu nie przetworzy żadnej logiki, natomiast wywołanie z parametrem akcja równym xml wykona metodę xml(). W metodzie tej można zmieć aktualnie dwie wartości. Tytuł strony $this->tytul = 'Lista modułów'; (ostatni załadowany na stronę moduł, który ma przypisany tytuł zostanie przypisany do zmiennej {strona.tytul} dostępnej po stronie szablonu) oraz szablon niestandardowym (o tym później). 1.4.3 Podpinanie zmiennych pod widokLogika to jedno, widok to drugi. Do widoku możemy podpinać wyniki naszych obliczeń. Robi się to bardzo prosto. W klasie modułu wywołujemy przypisanie do zmiennej daneTPL. Dla przykładu pokażę, jak przypisać do widoku liczbę pod zmienną {$liczba}, oraz tablicy o nazwie 'tablica'. $this->daneTPL['liczba'] = 2+4+8; $this->daneTPL['tablica'] = array(1,54,7,6,54,76,765,546576); 1.4.3 UprawnieniaDo danego modułu mogą być wymagane uprawienia, aby z nego skorzystać. Aktualnie funkcja jest w fazie testów. PORADNIK JEST NIEDOKOŃCZONY. AKTUALNIE PROJEKT DRZEMIE I CZEKA NA LEPSZE CZASY1.5 AutoDBPodręcznik omawiający przydatne metody oraz przykłady korzystania z biblioteki AutoDB. <do napisania> 2. AutorzyAutorem dokumentacji oraz kodu jest Paweł Napieracz, chyba że wymieniono inaczej w nagłówku pliku. Autorami użytych bibliotek są:
|