![]() |
![]() |
![]()
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 Nie całe 100 osób zobaczyło ten wątek i nie ma odpowiedzi na moja "drugą" serie pytań. Czy to za wiele? Moze te pytania nie nadają się do "przedszkola" i powinny wylądować gdzie indziej? Czy może te pytania są tak banalne że aż trudno na nie odpowiedzieć? Spokojnie, jest weekend, nasza polska ekstraklapa gra, ludzie mają wolne. Cierpliwości (IMG:style_emoticons/default/wink.gif) Cytat A co jeżeli ja chciałbym pracować na obiekcie który jest obecnie w pamięci i jest używane przez zalogowanego użytkownika? Mam wrażenie że tworze nowy czysty obiekt, i że dopuki sam go nie "zmanipuluje" to nie będzie zawierał żadnych danych. Chyba że się myle? Tak, wyrażenie $nowyobiekt = new VirtueMartCart; tworzy nowy obiekt typu VirtueMartCart. Natomiast na ile dany obiekt jest "czysty" zaraz po utworzeniu, to już zależy od samej klasy (czyli w tym przypadku VirtueMartCart) - zapewne więcej informacji na ten temat znajdziesz w dokumentacji. Cytat Wygląda to jak jakieś pobieranie sesji... Nawet jeśli miałbym identyfikować użytkownika to jak przekazać tą informacje tej przykładowej funkcji? Nie znam VirtueMart, ale klasa calculationHelper kojarzy się bardziej z klasą pomocniczą do obliczeń (jakieś VAT-y może, P&P etc. ?) niż z klasą, która miała by cokolwiek wspólnego z identyfikacją użytkowników. Ale gdybać sobie można, ponownie odsyłam do dokumentacji (IMG:style_emoticons/default/smile.gif) Cytat Prawie to mam, ale wciąż nie jestem pewny swoich przemyśleń. Ogólnie $this oraz -> , w php lekko mnie przeraża i jest częstym powodem nie jesności w skryptach. Np. czy dzięki -> moge tworzyć "podzmienne" ? Ze w zmiennej $calc chce podzmienna $max i zrobić $calc->max = 200; ? $this jest tak naprawdę obiektem na którym aktualnie dana metoda operuje. $this, czyli "ten", czyli w domyśle "ten obiekt, na rzecz którego została wywołana metoda". Generalne trzeba zdać sobie sprawę z zasadniczej różnicy między klasą i obiektem. I tak, operator -> pozwala Ci tworzyć "podzmienne", np. $calc->max = 200; Owe twory doczekały się nawet swojej nazwy - są to tzw. właściwości. Co więcej $this razem z operatorem "->" pozwala Ci tworzyć powyższe w bardziej elegancki (i bardziej preferowany w OOP) sposób, za pomocą tzw. "setterów" czyli metod które nadają jakąś wartość właściwości:
Mam nadzieję, że to Ci przybliży mniej więcej jak działa $this. Generalnie to wszystko to są podstawy (podstaw) OOP więc raczej nie będziemy tu na forum robić kursu tej techniki programowania. Poszukaj jakiegoś kursu w necie, albo nawet lepiej, zainwestuj w jakąś dobrą książkę o obiektowym PHP (a w ogóle najlepiej po prostu przeczytaj to http://www.php.net/manual/en/language.oop5.php), a jak będziesz miał problem z jakimś konkretnym przykładem, zagadnieniem, czy kawałkiem kodu, to myślę, że na pewno uzyskasz pomoc na tutejszym forum (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 22:36 |