![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 11.03.2007 Skąd: Łódzkie Ostrzeżenie: (0%) ![]() ![]() |
Witam.. mam taki kod:
fragment pliku strona.php:
nastepny plik wywolujacy obiekty z klasy (fragment):
i wyskakuje mi error: Fatal error: Call to undefined function wyswietl_dodaj_karte() in C:\xampp\htdocs\praca_inz\test.php on line 7 co jest nie tak?? jak zrobic aby funkcja wzor_obranowania byla elastyczna i mogla w sobie wyswietlac tez inne fukcje.. Ten post edytował japolak 5.11.2009, 22:30:54 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jak dla mnie to za bardzo chcesz upychać wszystko do wszystkiego. Zauważ, że większość Twoich metod uparcie chce coś wyświetlać, choć wcale nie jest to konieczne. Niech będzie sobie co chcesz w podziale, ale ustawiaj to osobnymi metodami. Osobna do doctype, osobna do meta, osobna do dodawania css i js, osobna do body. Dopiero w metodzie wyświetlającej całość strony składaj to do kupy. Poza tym uważam, że pisanie wszystkiego w jednej klasie wprowadzi chaos do twojego projektu w pewnym momencie będziesz miał tyle metod, że pogubisz się w ich wywołaniach. Zauważ, że przykładowo zdefiniujesz sobie metodę display() i będzie miała ona gotowy szablon strony. wystarczy, że w jej zmienne "wstrzykniesz" kawałki kodu i wszystko zagra. Jak go podzielisz? Twój wybór. Ale tylko ona jedna ma wpływać na całość. Nie zaś tak, że dostaje wszystko na gotowe. Weź sobie przykładowo sytuację, że obiekt ma do zmiany head i body. To zrób obiektowi funkcje je ustawiające, ale oczekuj określonego formatu i typu, byś mógł je do zmiennej wpisać. Gdy już masz wszystko ustawione, wywołaj metodę display() a wyświetli ci całość. Tymczasem Ty upychasz metodę wyświetlającą mikroskopijną część wyniku po innej metodzie, która też to robi, by ta druga robiła to samo w trzeciej. To nie ma sensu. Metodami ustawiaj tylko zmienne wewnątrz klasy, a tylko jedna powinna wyświetlać. Da ci to coś w stylu:
Oczywiście to baaaaaaaaaardzo okrojona wersja, ponieważ head powinno mieć podział na zmienną title (często zmieniana zmienna), tablicę znaczników meta, tablicę dołączanych arkuszy stylów, tablicę dołączanych skryptów itp, wraz z odpowiednimi metodami. Takie podejście mocno upraszcza nawet późniejsze dziedziczenie. Bo ostatecznie kończy się to poprzez wywołanie Zauważ, że to, co będzie w head i body jest dla mnie obojętne dopóki będzie miało odpowiedni format. Mogę tam wrzucić tablicę, którą mi funkcja display() sama wstawi odpowiednio do szablonu (tak jak zrobiłem z title), albo jako ciąg znakowy jak teraz to mam. Bez mieszania, kombinowania. a jeśli zechcę coś zmienić z wyświetlaniem to po prostu inny display mogę napisać bez modyfikacji czegokolwiek innego. Czyli przechodząc na terminologię MVC -> napisałbym inny widok dla tej klasy (IMG:style_emoticons/default/smile.gif) U Ciebie skończyło by się to poprawianiem kilku metod zapewne. Co istotniejsze. Dopóki nie wywołam funkcji display, mogę zmieniać nawet setki razy title czy inną część bez wpływu na całość tego co Ci zostanie pokazane. Bo i też jest to cały czas na serwerze tylko. Sekcję body możesz nawet składać. Wystarczy, że przerobisz funkę by zamiast podmiany mogła dodawać dodatkowo. A więc choćby coś w stylu:
EDIT: czemu wspomniałem o trybie dodawania? Bo to świetna baza wyjściowa dla tworzenia modułów. Zrobisz tylko pierwszy w trybie normalnym, a resztę w trybie dodawania i masz budowanie sekcji body z klocków wedle uznania. Najlepiej zaś jeszcze display domyślnie ustalić na jakiś wzorzec i go wypełniać. innymi słowy znacznie bardziej rozbudowany niż mój. Z większą ilością kod html, pomiędzy którymi tylko zmienne wkładamy. Ten post edytował thek 7.11.2009, 15:26:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 14:29 |