PHP Classes

File: Polish-punFramework.txt

Recommend this page to a friend!
  Classes of Piotr Malinski   punFramework   Polish-punFramework.txt   Download  
File: Polish-punFramework.txt
Role: Documentation
Content type: text/plain
Description: Polish Documentation
Class: punFramework
MVC framework to extend punBB discussion boards
Author: By
Last change:
Date: 17 years ago
Size: 6,125 bytes
 

Contents

Class file image Download
punFramework ver. 0.9 dla punBB 1.3-dev Autor: Piotr Malinski (riklaunim@gmail.com) Licencja: GPL www.php.rk.edu.pl www.cms.rk.edu.pl Wstęp #################### punFramework jest prostym frameworkiem bazującym na wzorcu MVC - Model-Widok-Kontroler umożliwiającym łatwe, przejżyste i proste tworzenie aplikacji dla forum punBB. punFramework nie umożliwia modyfikacji samego forum ale umożliwia tworzenie nowych komponentów w pełni z nim zintegrowanych (np. modułu news, artykułów czy dowolnych innych) Instalacja #################### - skopiuj mvc.php, debug.php i punFramework do katalogu z punBB 1.3-dev - nadaj chmod 777 lub 666 na debug.php jeżeli serwer działa pod kontrolą linuksa/unixa - punFramework WYMAGA PHP5 i nie będzie działać z PHP4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Opis Frameworka #################### Wszystkie twoje komponenty dostępne są poprzez plik mvc.php. Można zmienić nazwę tego pliku na dowolną. Kontrolery --------------------- - Kontrolery to pliki php umieszczone w punFramework/controllers/ - Każdy plik zawiera klasę PHP, która dziedziczy klasę punController - Nazwa pliku musi być taka sama jak nazwa klasy + .php - Szkieletowy kontroler to: class test extends punController { public function index() { return 'witaj świecie'; } } - Każdy moduł np. "newsy" powinny mieć własny kontroler - Każdy kontroler powinien mieć oddzielne metody dla poszczególnych akcji/widoków (pokaż newsy, dodaj newsa, usuń newsa) - Metody powinny zwracać (return) dane niż je wyświetlać Mapowanie URLi ------------------------- punFramework używa prostego mapowania: mvc.php?c=NAZWA_KONTROLERA mvc.php?c=NAZWA_KONTROLERA&m=NAZWA_METODY mvc.php?c=NAZWA_KONTROLERA&m=NAZWA_METODY&var1=foo1&va2=foo2 - NAZWA_KONTROLERA to nazwa kontrolera - NAZWA_METODY to nazwa metody kontrolera, którą chcemy wywołać - Nazwa kontrolera i metody może zawierać TYLKO znaki alfabetu - duże i małe liter. !!!!!!!!!! - Jeżeli nie podasz nazwy metody wtedy domyślnie zostanie wywołana metoda index() Dostępne zmienne punBB ------------------------------------------ $this->pun_user - tablica $pun_user z danymi o bierzącym użytkowniku $this->db - obiekt $db operujący na bazie danych $this->pun_config - tablica $pun_config zawierająca konfigurację forum $this->pun_url - tablica $pun_url zawierająca URLe do standardowych elementów forum $this->lang_common - tablica $lang_common zawierająca pospolite frazy-tłumaczenia możesz użyć print_r($TABLICA); by zobaczyć zawartość i strukturę danej tablicy Widoki --------------------------------------- Widoki to niejako szablony i powinny zawierać kod HTML odpowiedzialny za wygląd danego elementu. - Widoki zapisujemy jako pliki PHP w punFramework/views/ - By w kontrolerze załadować widok wystarczy: $wynik = NAZWA_KONTROLERA::load_view('NAZWA_WIDOKU', array()); $wynik = test::load_view('hello', array('user' => 'Jon Doe')); Gdzie NAZWA_WIDOKU to nazwa pliku widoku bez .php - Drugi argument to tablica asocjacyjna z danymi jakie mają być przekazane do widoku - W widoku tablica ta dostępna jest pod zmienną $data - Powinieneś używać styli/klas CSS punBB :) Modele ------------------------------------ Modele są podobne do kontrolerów, dziedziczą punRoot a ich zadaniem jest przechowywanie logiki operującej na bazie danych - samych zapytań z niezbędnym kodem dodatkowym. Używanie Modeli (jak i widoków) jest opcjonalne lecz zaleca się ich stosowanie. - Szkielet modelu wygląda tak: class posts extends punRoot { public function get_all_posts() { return posts::query("SELECT * FROM posts"); } } - Model zapisujemy jako punFramework/models/NAZWAKLASY.php - Każda operacja na bazie danych typu "pokaż newsy" , "usuń newsy" powinna mieć własną metodę - Możesz użyć $this->db - standardowego obiektu punBB do operowania na bazie danych - Możesz też używać NAZWAKLASY::query - wrappera, który zwróci tablicę asocjacyjną z wynikami dla zapytań SELECT oraz wykona i zwróci True dla pozostałych - Wrapper ::query wygeneruje wyjątek w przypadku błędu zapytania (patrz "obsługa błędów") - By załadować model w kontrolerze wystarczy: $object = NAZWA_KONTROLERA::load_model('NAZWA_MODELU'); $news = test::load_model('news'); $news->get_latest_news(); - $object w tym przykładzie to obiekt klasy kontrolera gotowy do wykorzystania. Inne Pomocniki -------------------------------------- - W kontrolerach możesz użyć: NAZWA_KONTROLERA::render_template('tytuł', 'treść'); Co zwróci dane wstawione w standardową komórkę punBB: <div class="pun-block"> <h2><span>TYTUŁ</span></h2> <div class="pun-content"> TREŚĆ </div> </div> - Oprócz tego masz dostęp do: NAZWA_KONTROLERA::is_admin() # zwróci True jeżeli bierzący użytkownik to Admin (ID grupy - 1) NAZWA_KONTROLERA::is_user() # zwróci True jeżeli bierzący użytkownik jest zwykłym użytkownikiem (ID grupy - 4) NAZWA_KONTROLERA::check_login() # zwróci True jeżeli bierzący użytkownik jest zalogowany metody zwrócą False w przypadku nie spełnienia warunku. Obsługa Błędów --------------------------------------- - Gdy framework napotka na błąd wygeneruje wyjątek, który zostanie przechwycony przez niego. - Pełen komunikat błędu zostanie zapisany do debug.php - Skrypt wyświetli zwykły ekran punBB informujący że coś się nie udało - By zobaczyć pełen komunikat błędu otwórz w edytorze tekstowym debug.php - Do obsługi własnych błędów również używaj wyjątków a punFramework obsłuży je tak samo jak własne :) IF($foo != $bar) { throw new Exception('$bar jest różne od $foo'); } Wykonywanie kodu zostanie przerwane w miejscu wywołania wyjątku, punFramework przejdzie do zapisania komunikatu i wyświetlenia wiadomości użytkownikowi Zobacz http://www.php.net/exceptions for info about exceptions "Jesteś Tutaj" -------------------------------- By zmienić treść obok tej frazy edytuj mvc.php, a dokładniej: $page_nav = 'punFramework | <a href="index.php">Go to Forum</a>'; Wstawiając własną treść