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
Sh4dow
post
Post #2





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


Cytat
Ma problem z cechą jaką posiadają obiekty.
...

No tutaj obejść się tego nie da, żeby mieć obiekt musisz mieć definicje, serializacja nie powiada danych o metodach i wszystkich innych cudach, tylko i wyłacznie dane jakie zapisałes w obiekcie. Połączenia z baza danych tez zostają zerwane. Jak z instancjami obiektów nie wiem, ale podejrzewam że także znikną. ale o to zawsze mogą zadbać "magiczne" metody __sleep() i __wake(), jeśli niczego nie poprzekręcałem.
Ostatecznie obiekt który obsługuje obiekty, może pobierać dane z obiektów z klasy stdClass która jest zbudowana w PHP i służy jedynie jako taki magazyn danych w postaci obiektu. Do tego nie wymagana jest definicja klasy, ale jednocześnie nie posiadasz żadnych metod w obiekcie.

Cytat
...
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.
...


Pracujesz na pewno na PHP 5.x (i chwała tobie) a tam obiekty przekazywane są jako referencje, zawsze. Wiec zmiana na obiekcie będzie widziana wszędzie gdzie została stworzona referencja. Jeśli chcesz zrobić "klony" obiektu to proponuje ten link klonowanie obiektów, który może ci będzie do czegoś pomocny.

Niestety reszta twojego posta jest trochę zagmatwana i nie do końca rozumiem co miałeś na myśli.
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: 8.10.2025 - 11:09