![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 5.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Staram sie ogarnac Joomla Api i VirtueMart. W sprawach PHP i programowania OOB jestem bardzo słaby, dlatego też mam pare pytań. Znalazłem sobie dokumentacje od VirtueMart Api ale niestety nie potrafie używać klas. Np:
Ta funkcja zwraca wartość koszyka(tzn. łączną kwote za wszystkie produkty), nawet jeżeli sie myle, to chciałbym stworzyć skrypt który mi wypisze na ekranie tą wartość (nawet jeżeli to bedzie cos innego niz wartosc ksozyka). A więc znajduje się ona w klasie VirtueMartCart. Czy ja musze stworzyć nowy obiekt? $nowyobiekt = new VirtueMartCart; echo $nowyobiekt->getCartPrices(); ? Jaka mam pewnosć ze zobrazuje to wartość danego uzytkownika (tego któremu będzie się wyświetlał skrypt), bo przeciez może ich być tysiące zalogownych, z resztą wydaje mi sie że stworzyłem nowy czysty obiekt. (chyba brakuje tu słówka "this" którego nie dokonca rozumiem w OOB). Czy to wystarczy? Czy moze wczesniej trzeba uzyć tysiąca innych klas aby "ta" klasa miała wystarczające informacje aby zwrócić dane? Jezeli zaincluduje plik z tą klasą to to wystarczy aby ta klasa zwróciła wynik? Czy powinienem też zainculdować inne skrypty? Wiem ze to MEGA masło maślane, ale naprawde OOB nie jest zbyt przyjazne dla początkującego użytkownika. Jeżeli coś jest nie jasne, prosze pytać. Postaram się to wyjasnic w jakis inny sposób. Ten post edytował Stiffler 5.04.2014, 18:12:24 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Przyjmijmy że znalazłem tą klasę do wyświetlania informacji z koszyka. Czy jest ona niezależna? Czy po zaincludowaniu jej i wywolaniu dostane ta informacje? Czy może przed jej wywolaniem (funkcji) powinienem zacząć od innych z danej lub innej klasy? Jak to się ma ogólnie w programowaniu OOP? Zależy (IMG:style_emoticons/default/smile.gif) Jeżeli do utworzenia klasy skorzystano z innych klas, to wtedy rzecz jasna dana klasa jest od nich zależna. W OOP jest to nazywane agregacją. Częstym przykładem agregacji jest np. samochod - każdy samochód posiada silnik (no ok, prawie każdy) więc klasa Samochod może wyglądać np. tak:
Oczywiście jest to tylko przykład mający na celu pokazać zależoność między klasami Silnik i Samochod. W momencie tworzenia obiektu typu Samochod, obie klasy muszą być parserowi znane (poprzez "znane" mam na myśli dołączone poprzez include / require, albo zdefiniowane w tym samym pliku co wyrażenie new Samochod()). Jeśli którejś z nich braknie, wtedy wyświetli Ci sie błąd w stylu Class 'Silnik' no found.... To odnośnie Twojego pytania czy dostaniesz jakąś informacje na temat koniecznych do utworzenia obiektu klas. Tak, ten błąd będzie informacją (IMG:style_emoticons/default/smile.gif) Drugim przypadkiem zależności klas jest dziedziczenie (bądź implementacja interfejsów, ale z punktu widzenia powyżego jest to to samo). Tzn. klasa B może dziedziczyć pewne właściwości / metody z klasy A. Np. powyższa klasa Samochod moze dziedziczyć z klasy Pojazd (każdy samochód jest pojazdem):
I tutaj podobnie podczas tworzenia obiektu Samochod również obie klasy muszą być znane parserowi. Cytat Funkcja przyjmuje parametr $cart więc powinienem znalesc inną która go zwraca? Ponownie - zależy. Jeśli $cart spodziewa się typu np. Cart, czy VirtueMartCart itp. to tak, musisz przekazać parametr właśnie tego typu. Zapewne jest to w dokumentacji (IMG:style_emoticons/default/smile.gif) Generalnie z doświadczenia mogę Ci powiedzieć, że jeśli "wydzierasz" jakąkolwiek klasę z jakiegokolwiek framework-a, to na 99% będzie ona zależna od innch klas. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 14:07 |