![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 28.04.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam taką linijke w kodzie :
jednak potrzebuje aby nazwa klasy była wczytywana ze zmiennej (znajduje się ona w $this->module->action) Zastosowanie
nie działa a więc albo jest to nie możliwe albo istnieje na to jakiś sprytny sposób, którym się mam nadzieje ze mną podzielicie ![]() Znalazłem w internecie kilka wyjaśnień jak się z tym uporać jednak żadne z nich nie działało Pozdrawiam i z góry dziękuje za pomoc! |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Skorzystaj z ReflectionAPI.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Jesli jako nazwe funckji podasz $this -> costam tez nie dziala spruboj tak:
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 28.04.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
przy podaniu zmiennej otrzymuje
Cytat Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /var/www/opencart/api/lib.class.php on line 60 ![]() Ten post edytował Bajki 10.10.2009, 13:33:33 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 28.04.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
ok wygląda na to, że ta funkcja załatwia sprawę jednak pojawiają się pewne komplikacje.
Kiedy używałem Cytat getRecent::getContent(); nie pojawiały się żadne błędy, jednak gdy używam call_user_func (która chyba robi to samo?) otrzymuje : Cytat Fatal error: Using $this when not in object context in /var/www/opencart/api/modules/shop/products/getPopular.php on line 8 Klasa nazywa się getRecent i jest includowana przez require_once() z zewnętrznego pliku wyglądającego tak :
chciał bym wiedzieć czy problem wynika z błędnej konstrukcji skryptu czy z tego, że call_user_func działa inaczej niż mi się wydaje. Jeśli to potrzebne, opiszę dokładniej strukturę całego skryptu. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Najpierw musisz zainicjalizować getRecent, czyli
edit: $this->db to nawet nie obiekt.... powinieneś przeprojektować ten swój systemik. Ten post edytował LBO 10.10.2009, 16:36:36 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 28.04.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
hehe no właśnie na razie się bawie z projektowaniem obiektowym i tworzeniem klas więc to może wszystko kiepsko wyglądać
![]() ![]() Ogólnie cały skrypt wygląda tak, że mam klasę Core w której umieściłem różne funkcje...m.in. getModule któ¶a wygląda tak :
funkcja ta, na podstawie $_GET['module'] wczytuje/includuje odpowiedni plik z klasą Czy Twoje rozwiązanie tyczy się właśnie tej funkcji ? tzn. czy podane przez Ciebie linijki mam dokleić do tej funkcji ? Kiedy to robie, otrzymuje absurdalne błędy przy połączeniu z mysqlem. Funkcja db() wygląda następująco :
przed zastosowaniem Twojego rozwiązania skrypt łączy się pomyślnie jednak kiedy dokleje linijki, otrzymuje : Cytat Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/opencart/api/lib.class.php on line 124 Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/opencart/api/lib.class.php on line 124 Warning: Cannot modify header information - headers already sent by (output started at /var/www/opencart/api/lib.class.php:124) in /var/www/opencart/api/lib.class.php on line 71 I nie mam pojęcia co mają wspólnego te linijki z połączeniem...to się wydaje absurdalne ale rozumiem, że na pewno popełniłem jakiś idiotyczny błąd lub czegoś nie rozumiem ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 28.04.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
oczywiście. Dokładniej w ten sposób :
+
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ale na obiekcie Core, a nie getRecent prawda?
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 28.04.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
zgadza się
![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Czyli na drodze dalszej dedukcji mogę założyć, że już wiesz - dzięki wnikliwej analizie - w czym tkwi problem?
![]() ![]() ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 128 Pomógł: 1 Dołączył: 28.04.2005 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
hehe no tak domyślam się ale nie całkiem rozumiem dlaczego
![]()
oznacza, że klasa getRecent dziedziczy 'wszystko' z klasy Core. A jeśli tak, to dlaczego nie moge użyć zmiennych ? Do tego znajdujących się w w tej samej klasie(Core) co funkcja odpowiedzialna za zapytanie SQL ? Ten post edytował Bajki 10.10.2009, 21:53:39 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
już ci pokazuje:
Tak to wygląda. Jest jeszcze możliwość użycia statycznych atrybutów klasy, ale z tym odsyłam do manuala |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Klasa B dziedziczy schemat klasy rodzicielskiej czyli nazwy i ciała funkcji (za wyjątkiem specjalnych jak choćby konstruktor)oraz parametrów, ale nie przypisane wartości do już istniejących obiektów. By móc w każdym elemencie klasy odnosić się do pewnego pola, które jest wspólne dla wszystkich musisz zadeklarować dany argument jako static. Pamiętaj jednak, że każdy z obiektów ma do niej dostęp i zmiana w jednym z nich powoduje, że jej wartość jest zmieniona dla wszystkich. A to może być efekt na jakim Ci nie zależy. By zrobić to o czym myślisz, musiałbyś przewidzieć możliwość przypisania obiektu klasy rodzica obiektowi klasy pochodnej.
Sprowadzi się to do inicjalizacji klasy pochodnej obiektem klasy rodzica. Myślę, że odpowiedni konstruktor w klasie B tu wystarczyłby. Musiałbyś sprawdzić czy obiekt jest klasy przodka i jego danymi uzupełnić odpowiednie atrybuty. EDIT: By wyjaśnić Ci bezsensowność Twojego myślenia weź pod uwagę, że klasa może utworzyć wiele obiektów... Pytanie teraz... Skąd wiedziałbyś czy w b są dane obiektu a1, a2 czy a3? Losowe, ostatniego, pierwszego? Ten post edytował thek 13.10.2009, 14:35:02 -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
O ile nie są uczynione prywatnymi to są.
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
O ile nie są uczynione prywatnymi to są. Śmiem twierdzić, że się mylisz.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 21:47 |