![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 1 Dołączył: 3.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie. Jak czytałem na kilku forach książka (php i mysql. tworzenie stron www. vademecum profesjonalisty. wydanie czwarte) posiada trochę błędów i nie należy ponoć do wybitnych. Chodzi mi o pewien przykład z rozdziału 31 - "tworzenie forum www". Wydaje mi się, iż pomóc mogą mi osoby, które posiadają tą książkę. Jest tam klasa, która ma służyć do budowy drzewa artykułów tegoż forum. To nie cały listing tej klasy, ale wystarczy do objaśnienia problemu :
A to listing gdzie tworzony jest egzemplarz tej klasy :
Więc od początku. Gdy tworzony jest egzemplarz tej klasy,funkcja konstrukcyjna sprawdza czy dany artykuł posiada dzieci, następnie tworzony jest nowy egzemplarz tej klasy przez co funkcja konstrukcyjna znów.... i tak dalej i tak dalej... Chodzi mi głownie o tą część :
Dajmy na to że mamy dwa artykuły A i B na poziomie "0". Następnie dwa artykuły C i D gdzie C jest dzieckiem A i D jest dzieckiem C. Czyli A->C->D i B obok A. Gdy tworzony jest pierwszy egzemplarz klasy konstruktor sprawdza w badzie że są dwa artykuły na "0" poziomie ( A i B ) . Pobiera ich dane. Następnie w bloku iteracyjnym tworzony jest nowy egzemplarz (który jest tablicą) omawianej klasy : c_lista_pot[0] i tam następuje znów wywołanie konstruktora, potem iteracja i znów tworzony jest egzemplarz omawianej klasy: c_lista_pot[0]. Więc co mamy dwa egzemplarze c_lista_pot[0] ? Chyba że ja czegoś nie rozumiem. Przecież jak będzie kilka gałęzi to każdy pierwszy element będzie c_lista_pot[0] bo indeks pochodzi od funkcji iteracyjnej.. To samo tyczy się zmiennej $glebokosc+1. Przecież gdy kończy analizowanie danej gałęzi i wraca do góry drzewa aby analizować kolejną gałąź to musi ta zmienna się zerować aby głębokość pierwszego elementu tej gałezi była 0. Mam nadzieję, że nie zamieszałem zbytnio, i faktem jest jak już pisałem wcześniej, że najlepiej jeśli ktoś posiada tą książkę aby mi pomóc. W razie czego mogę więcej napisać informacji z książki. Pozdrawiam GreeN |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 1 Dołączył: 3.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem pewnej kwestii. Mając daną klasę "jedzenie" to czy :
$chleb = new jedzenie(); $chleb = new jedzenie(); $chleb = new jedzenie(); tworzone są trzy obiekty klasy jedzenie? bo w tamtym przykładzie jeśli założymy że jest znaczna ilość artykułów, wiele gałęzi to taki przypadek : c_lista_pot[0]= new wezel_drzewa..... powtórzy się wiele razy. ------------------------------------------------- edit. Widzę że cicho w temacie. Wydaje mi się że jeśli ma to być lista artykułów to powinno być zamiast tak
tak
Wtedy utworzy się lista gdzie dany rekord tablicy będzie wskazywał na dany obiekt (artykuł). ----------------- edit2 Napisałem bzdurę bowiem przecież nie jest powiedziane iż np. dziecko artykułu o id=2 będzie miało id=3. Zanim pojawi się odpowiedź na id=2 może pojawić się wiele nie związanych z nim artykułów. W tym wypadku przy kodzie co podałem wyżej powstanie lista artykułów o złej kolejności. Wynika z tego, że poprostu powinno być : <php>$this->c_lista_pot[kolejny rekord tablicy]= new wezel_drzewa...</php> Ten post edytował GreeN_DG 31.01.2011, 22:59:54 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 18:12 |