<?php // modul Auth class ModAuth { public function rysuj() {} public function akcja($r) {} }; class Auth { public function zaloguj($r) {} public function wyloguj() {} public function czyZalogowany() {} public function podajStatus() {} public function ktoZalogowany() {} }; class AuthGUI { public function formZalogowania() {} public function formWylogowania($u) {} }; class User { public function __construct() {} // atrybuty i funkcje dostepowe }; class DataBase { private function __construct() {} public function instance() {} public function query($s) {} public function getRow($s) {} public function getAll($s) {} }; // modul Msg class ModMsg { public function akcja($r) {} }; class Msg { public function listaWadomosci() {} public function dodajWiadomosc() {} public function usunWiadomosc($nr) {} public function edytujWiadomosc($nr) {} public function pobierzWiadomosc($r) {} }; class MsgGUI { public function pokazWiadomosc($w) {} public function pokazListeWiadomosci($lm) {} public function formWiadomosc($w){} public function przyciskDodajWiadomosc() {} public function przyciskUsunWiadomosc($nr) {} public function przyciskEdytujWiadomosc($nr) {} }; class MsgDB { public function pobierzWiadomosc($nr) {} public function pobierzListeWiadomosci() {} public function dodajWiadomosc($w) {} public function usunWiadomosc($nr) {} public function aktualizujWiadomosc($w) {} }; class Message { public function __construct() {} // atrybuty i funkcje dostepowe }; ?>
i takie zadanie
Msg::MsgGUI::przyciskEdytujwiadomosc(int)
Msg::MsgDB::pobierzWiadomosc(int):Message
Msg::Msg::dodajWiadomosc()
Auth::User::pobierzHaslo():string
zrobiłem na razie 2 metody i chce się upewnić czy dobrze
mój kod:
<? // modul Auth class ModAuth { public function rysuj() {} public function akcja($r) {} }; class Auth { public function zaloguj($r) {} public function wyloguj() {} public function czyZalogowany() {} public function podajStatus() {} public function ktoZalogowany() {} }; class AuthGUI { public function formZalogowania() {} public function formWylogowania($u) {} }; class User { public function __construct() {} // atrybuty i funkcje dostepowe }; class DataBase { private function __construct() {} public function instance() {} public function query($s) {} public function getRow($s) {} public function getAll($s) {} }; // modul Msg class ModMsg { public function akcja($r) {} }; class Msg extends MsgGUI{ public function listaWadomosci() {} public function dodajWiadomosc() {} public function usunWiadomosc($nr) {} public function edytujWiadomosc($nr) {} public function pobierzWiadomosc($r) {} }; class MsgGUI { public function pokazWiadomosc($w) {} public function pokazListeWiadomosci($lm) {} public function formWiadomosc($w){} public function przyciskDodajWiadomosc() {} public function przyciskUsunWiadomosc($nr) {} public function przyciskEdytujWiadomosc($nr) {} }; class MsgDB extends Msg{ public function pobierzWiadomosc($nr) {} public function pobierzListeWiadomosci() {} public function dodajWiadomosc($w) {} public function usunWiadomosc($nr) {} public function aktualizujWiadomosc($w) {} }; class Message { public function __construct() {} // atrybuty i funkcje dostepowe }; //mój kod $msg = new Msg(); $msggui = new MsgGUI(); $modmsg = new ModMsg(); $msg->przyciskEdytujWiadomosc($nr); $msg->pobierzWiadomosc($r);
Dobrze to rozwiązałem.
Mam jeszcze schemat jak co:
http://img517.imageshack.us/i/messageboardklasyhtml1e.png/
http://img228.imageshack.us/i/messageboardklasyhtmlm4.png/
i opis
Klasa ModMsg
ModMsg::akcja(r:string[]) – Parametr metody jest tablicą asocjacyjną. Metoda sprawdza wartość r['akcja']. Jeżeli r['akcja']='pobierz' – wołana jest metoda Msg::pobierzWiadomosc(string[]) (r przekazywane jest do niej jako parametr), dla r['akcja']='dodaj' wołana jest metoda Msg::dodajWiadomosc(),dla r['akcja']='usun' wołana jest metoda Msg::usunWiadomosc(int) (jako parametr przekazywana jest wartość r['id']), dla r['akcja']='edytuj' wołana jest metoda Msg::edytujWiadomosc(int) (jako parametr przekazywana jest wartość r['id']). Jeżeli r['akcja'] nie jest ustawiona to wołana jest metoda Msg::listaWiadomosci().
Klasa Msg
Msg::listaWiadomosci() - Metoda pobiera z bazy liste wiadomosci (MsgDB::pobierzListeWiadomosci:Message[]) i wyswietla ją (MsgGUI::pokazListeWiadomosci(Message[])).
Msg::dodajWiadomosc() - Metoda tworzy nowy obiekt Message i wyswietla formularz MsgGUI::formWaidomosc(Message) przekazuąc utwożony obiekt jako parametr metody.
Msg::usunWiadomosc(int) – Metoda usuwa z bazy danych wiadomosc o podanym ID – wykorzystywana jest metoda MsgDB::usunWiadomosc(int).
Msg::edytujWiadomosc(int) – Metoda pobiera z bazy danych wiadomosc o podanym ID (metoda MsgDB::pobierzWiadomosc(int) i wyswietla ją w postaci formularza (metoda MsgGUI::formWiadomosc(Wiadomosc)).
Msg::pobierzWiadomosc(r:string[]) - Parametr r jest tablicą asocjacyjna zawierającą pola: r['data'], r['temat'], r['tresc'], r['autor'], r['id']. Metoda tworzy nowy obiekt klasy Wiadomosc i wypelnia go danymi z tablicy. Jeżeli r['id'] wynosi -1. Wiadomość przekazywana jest do metody MsgDB::dodajWiadomosc(Message) w celu dodania do bazy, Jeżeli r['id'] jest różne niż -1, wykorzystywana jest metoda MsgDB::aktualizujWiadomosc(Message) – aktualizacja wiadomości w bazie.
Klasa MsgGUI
MsgGUI::pokazWiadomosc(Message) – Wyświetla podaną jako parametr wiadomość sformatowaną w postaci tabelki. Dodatkowo, jeżeli autor wiadomości jest taki sam jak zalogowany użytkownik (użyć metody Auth::ktoZalogowany() do pobrania danych), pod tabelką należy wyświetlić przyciski edycji i usuniecia wiadomosci (metody MsgGUI::przyciskEdytujWiadomosc(int ) i MsgGUI::przyciskUsunWiadomosc(int) – jako parametr podać ID wiadomości).
MsgGUI::pokazListeWiadomosci(Message[]) - Wyświetla kolejno wszystkie wiadomości z listy przekazanej jako parametr. Do wyświetlenia każdej z wiadomości stosuje metode MsgGUI::pokazWiadomosc(Message). Dodatkowo na końcu wyświetla przycisk nowej wiadomości (metoda MsgGUI::przyciskDodajWiadomosc()).
MsgGUI::formWiadomosc(Message) – Wyświetla formularz wiadomosci. Formularz powinien zawierać pola: data,temat, treść, oraz pola ukryte id (ustawione na id wiadomosci), autor (ustawione na autora wiadomosci), mod=msg, akcja=pobierz.
MsgGUI::przyciskDodajWiadomosc() - Wyświetla fomularz składający się tylko z jednego przycisku. Formularz zawiera pola ukryte mod=msg i akcja=dodaj.
MsgGUI::przyciskUsunWiadomosc(int) – Wyświetla formularz składający się tylko z jednego przycisku. Formularz zawiera pola ukryte mod=msg, akcja=usun, id=(ID wiadomosci).
MsgGUI::przyciskEdytujWiadomosc(int) - Wyświetla formularz składający się tylko z jednego przycisku. Formularz zawiera pola ukryte mod=msg, akcja=edytuj, id=(ID wiadomosci).
Klasa MsgDB (note: W bazie danych jest tabela MESSAGES o strukturze odpowiadającej atrybutom klasy Message)
MsgDB::pobierzWiadomosc(int):Message – pobiera z bazy i zwraca wiadomość o podanym id (metoda DataBase::getRow(string)).
MsgDB::pobierzListeWiadomosci:Message[] - pobiera z bazy i zwraca liste wszystkich wiadomosci ( DataBase::getAll(string))
MsgDB::dodajWiadomosc(Message) – Dodaje wiadomość do bazy danych (metoda DataBase::query). Sprawdza id wiadomości. Jeżeli id jest równy -1 (nowa wiadomość) to nie powinien być ustawiany (baza ustawi na wartość domyślną), w przeciwnym wypadku powinien być ustawiony razem z pozostałymi polami.
MsgDB::usunWiadomosc(int) – Usuwa z bazy danych wiadomość o podanym id. Używa metody DataBase::query(string).
MsgDB::aktualizujWiadomosc(Message) – Aktualizuje w bazie wiadomość o podanym id. Można zrobić to za pomocą usunięcia i ponownego dodania tej wiadomości.
Czy dobrze myślę?
