Login   Register  
PHP Classes
elePHPant
Icontem

File: Polish-punFramework.txt

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  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: 2006-12-26 05:09
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ść