Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Faza projektowania - Generator Formularzy, Diagramy UML, wzorce projektowe,
kaniagandzowski
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 2.06.2006

Ostrzeżenie: (0%)
-----


Witam chcę poprosić was o rady co do budowy aplikacji i sugestie w jaki sposób mają być generowane elementy formularza z godnie z programowaniem obiektowym. W tym konkretnym przypadku.

W skrócie napisze co ma robić aplikacja i z jakich bibliotek będę korzystać.

Chcę stworzyć generator, który by pozwalał na proste tworzenie formularza z wykorzystaniem AJAX.
Zasada działania polegała by na wprowadzeniu wymaganych pól formularza, nadawanie reguł na dane pola, filtry i wybranie akcji.

Reguły nakładane na pola formularza:
- pole wymagane
- wartość typu liczby
- własne reguły
- upload plików itd.
Akcje:
- Zapisanie do bazy danych
- Wygenerowanie PDF
- wysłanie Emaila
- wykonanie dowolnego skryptu itd.
Filtry
- czyszczenie wartości ze spacji na początku i końcu wartości (polecenie trim) itd.

Wygląd formularza był by tworzony przy pomocy dowolnego programu typu Dreamware lub FrontPage
, który powstały szablon by zwierał tylko odwołania do zmiennych ( $labelImie, $imie ). Zmienne zawarte w szablonie zostaną zamienione na kod html dla danego pola np.
  1. <input id="ddd" name="ddd">
.

Do realizacji mojego zadania chcę maksymalnie wykorzystać gotowe rozwiązania aby nie odkrywać na nowo już dawno znanych wzorców projektowych i bibliotek. Tak więc będę wykorzystywać :
- FrameWork Code Igniter
- Xajax (biblioteka AJAX)
- PEAR – HTML_QuickForm

Do tematu podszedłem w ten sposób że każde dowolne rodzaj pola jaki może wystąpić w formularzu jest osobną klasą (np. pola typu input generowane są przez klase input).

Reguły są nakładane w taki sam sposób jak to robione jest w HTML_QuickForm elementy w sumie też podobnie ale tworze klasy ponieważ każdy element czy to reguła wymaga jakiś specyficznych parametrów zanim zostanie wygenerowany element czy nałożona rugała.

Np. tworząc własną regułę pozwalająca na wypełnienie formularza w danym czasie. Do takiej klasy należy przekazać kilka parametrów takich jak data rozpoczęcia i zakończenia publikacji formularza. A chce też w późniejszym czasie dodawać proste klasy dodające nowe funkcje. A że program ma generować formularze, musi wiedzieć o jakie parametry należy poprosić użytkownika.

Po niżej przedstawiam diagram klass.
Diagram przedstawia tylko klasy odpowiedzialne za tworzenie formularza, która sama się nie złoży i należy jeszcze dodać klasy odpowiedzialne za składanie obiektów w całość (klasy odpowiedzialne za wyświetlanie strony w której graficznie dodawało się pola do formularza - dla mnie to będzie najgorsze, ponieważ zawsze mam problemy z złożeniem w całość. Często kod staje się mniej czytelny i sam się w nim gubię (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ).

Proszę też uwagi co do samego diagramu. Na pewno strzałki pokazujące relacje pomiędzy klasami nie są poprawne ponieważ nie do końca poznałem, sens praktycznego stosowania danych relacji jak złożenia, skojarzenia, generalizacja itd.

Co do diagramu. Mam problemy z dodawaniem polskich znaków tak więc, w diagramie, gdzie nie gdzie są polskie znaki. Wynika to iż program ma przypisane skróty klawiszowe, np ą maże całą zawartość pola.

(IMG:http://www.okun.nazwa.pl/classdiagram2.jpg)
Narzędzia jakie stosuje to:
- Zend Studio
- StarUML
- DBDesigner

Ten post edytował kaniagandzowski 21.08.2007, 19:46:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kaniagandzowski
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 2.06.2006

Ostrzeżenie: (0%)
-----


Ma problem z cechą jaką posiadają obiekty.

Obiekty serializowane czy to do bazy czy do sesji ($_SESSION[‘nazwaJakiegośObiektu’] = jakiśSerializowanyObiekt) po deserializacji po jakimś czasie (uruchomieniu programu czy to inna sytuacja) wymaga posiadania definicji klasy dla danego obiektu. Czyli korzystanie z obiektu wymaga pierw załadowanie jego klasy z której powstał (szkielet klasy, z którego powstał obiekt).

Chcę uprościć sobie zadanie aby generowany formularz (obiekt) wraz elementami jaki zawiera, regułami, akcjami (i ich właściwościami) był raz generowany. Generowanie obiektu Formularz było by przy tworzeniu tego obiektu. Później jego wynik został zapisany do bazy danych.
Co nie musiał na nowo ładować definicji klas i parametrów, czyli powtarzać całej czynność jaka jest wykonywana przy tworzeniu tego obiektu.

Czy jest jakaś metoda, która by pozwalała na prosty sposób ominięcie tego problemu lub w eleganckie rozwiązanie. Czy jednak należy powtarzać tą całą operacje ładowania każdego elementu jaki został użyty do budowy formularza.

Jeszcze druga sprawa odnośnie samych obiektów.

Co obiekt posiada takiego (czy ma jakiś numer id obiektu), że przy przekazywaniu do różnych klas i wykonywaniu operacji na nim (zmiana jego właściwości) jest widoczna wszędzie, w każdej klasie, która posiada jego instancje.

Pytam się ponieważ, pomyślałem ze do moich akcji, które niestety będą do swojego działania (nie które akcje) wymagały informacji poprzednika (informacje takie jak czy akcja się powiodła).
Wyglądało by to w tę sposób, że do akcji bym raz przekazał instancje obiektu formularza (która zwiera informacje o przebiegu poszczególnych akcji) w postaci parametru dla akcji przy tworzeniu formularza.
Każda akcja np. Baza Danych wymaga informacji konfiguracyjnych (takie jak nazwa bazy danych itd., które przekazywane są przy tworzeniu formularza) a wraz parametrami przekazał instancje formularza. Później jakie kol wiek zmiany by zaszły w historii wykonywania akcji (ich przebiegu) dostępna była by od razu w wybranej akcji, która to wymaga tych danych (myślę, że będzie działać, bo będzie posiadać unikatowy nr id tego obiektu formularza jaki jest nr. Obiektu formularza, ponieważ nie był by na nowo tworzony obiekt formularza tylko odtworzony z bazy danych, za pomocą unserialize).
Czy to zadziała?


Instancja mam na myśli operacje przekazywania obiektu do metody czy do funkcji tak jak zmienną. Nie wiem czy dobrze używam tego słowa w tym znaczeniu!.

Ten post edytował kaniagandzowski 23.08.2007, 18:00:37
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 23:04