![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 258 Pomógł: 17 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
witam
czegos chyba nie do konca rozumiem i mam prosbę o wyjaśnienie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Mam kod jak ponizej:
wynikiem dzialania $db = DataBase::getInstance(); jest Cytat getinstance //4 konstruktor //1 Object id #4 //3 Object id #3 //5 Fatal error: Call to undefined method DataBase::Execute() in class/DataBase.class.php on line 32 //6 zmienna $AdoDbLiteInstance jest zmienna statyczna i stale odwoluje sie do niej przez self:: - nie wiem dlaczego wiec raz jest to object4 a raz object3. Ma ktos jakis pomysl?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? Ten post edytował mrok 4.03.2008, 22:57:58 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
w linii 3 (private static = null;) masz parsera, brakuje Ci nazwy zmiennej
poza tym nie wiadomo gdzie masz określone zmienne $dbHost, $dbUser, $dbPass, $dbName, jeśli to wszystko sobie poustawiałem to mi zadziałało (wydaje mi się że wg założenia) Pozdrawiam |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 258 Pomógł: 17 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat w linii 3 (private static = null;) masz parsera, brakuje Ci nazwy zmiennej bystre oko (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - juz poprawilem, ale nie tu lezy problem - niestety Cytat poza tym nie wiadomo gdzie masz określone zmienne $dbHost, $dbUser, $dbPass, $dbName wyrzucilem te linie aby nie wrzucac 60linii kodu (wtedy pewnie nikt w niego nie spojrzy) Zauwaz ze w wynikach nie ma nic na temat niezdefiniowanych zmiennych |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
he he, sorry nie odpowiadałem ale jakość tak inne posty (szczególnie gości (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) na tym forum mnie zaciekawiły (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
otóż masz błąd: linia 19: self::$AdoDbLiteInstance = new self(); czyli wywołujesz konstruktor... a w konstruktorze odwołujesz się do tej samej zmiennej statycznej: linia 8: self::$AdoDbLiteInstance = NewADOConnection("mysqlt"); czyli program na pewno ma błąd logiczny. Nie wiem co chcesz osiągnąć ale na 99% pewności (opartej o nazwę tej zmiennej statycznej) trzeba zmienić linię 19 z:
na :
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 258 Pomógł: 17 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Masz racje Cezar708. dziekuje bardzo.
Czyli tak lopatologicznie - ja probowalem przypisac obiekt do tej zmiennej Cytat self::$AdoDbLiteInstance = new self(); zamist odpalic konstruktor Cytat new self(); ktory wykona na niej odpowiednie operacje?? czy tak?? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Chcesz tworzyc martwy obiekt zużywając na niego pamięć ?
pozdr. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 258 Pomógł: 17 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Chcesz tworzyc martwy obiekt zużywając na niego pamięć ? Dlaczego martwy - to typowy singleton tylko na poczatku troche go zepsulem?? dzieki temu potem w kodzie w jakimkolwiek obiekcie moge wywolac cos takiego
i juz mam obiekt $db klasy AdoDb z jednym aktywnym polaczeniem do bazy. Nie musze duzej ilosci zmiennych przekazywac w parametrach, a i obiekt mam tylko jeden wiec ograniczam zuzycie pamieci. pozdrawiam |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
No właśnie ... to NIE JEST singleton ...
pozdr. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 258 Pomógł: 17 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat No właśnie ... to NIE JEST singleton ... nie bede sie kłócił, ponieważ brak mi argumentów (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , ale czy mógłbyś rozwinąc tę myśl?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) czy jesli obiekt zwroci samego siebie to juz nie jest singletonem?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? przeciez dzieki temu mam zawsze jeden obiekt tego typu?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) pozdrawiam |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Twój kod:
Natomiast poprawny kod to byłby np.
Pisane na szybko z palca by uzmysłowić o co chodzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ogólnie chodzi o to by nie mieszać części statycznej od części dynamicznej. Część dynamiczna nie powinna dotykać części statycznej. W Twoim przypadku o wiele lepiej byś zrobił jakbyś napisał zamiast swojego taki kod:
Dzięki temu nie tworzysz obiektu do którego nie masz nigdzie uchwytu. pozdr. Ten post edytował Kocurro 7.03.2008, 12:17:50 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 258 Pomógł: 17 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
wow - widze drobne niuanse, a jednak roznica duza.
Dzieki za wytlumaczenia. Twoj pomysł, jak to zrobić lepiej jest swietny. Dziekuję Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:51 |