![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 4 Dołączył: 9.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przerabiam książkę i jest tam taka klasa, która trochę zmieniłem. Lecz po uruchomieniu wyskakuje mi wiele błędów. Co robię nie tak, że mam tyle błędów. Np. W 164 LINI wyskakuje taki błąd Undefined variable: objDB in C:\wamp\www\lookbook\class\class.UserSession.php on line 164 linia ta zawiera taki kod:
a gdy zamienie to na:
to działa dobrze. Gdzie jest tu błąd skoro w konstruktorze stworzyłem taki obiekt. ? a to reszta błędów: 1.Undefined index: HTTP_USER_AGENT in C:\wamp\www\lookbook\class\class.UserSession.php on line 27 2.PHPSESSID in C:\wamp\www\lookbook\class\class.UserSession.php on line 28 3.HTTP_USER_AGENT in C:\wamp\www\lookbook\class\class.UserSession.php on line 158 4.Undefined variable: objDB in C:\wamp\www\lookbook\class\class.UserSession.php on line 164 5.Call to a member function select() on a non-object in C:\wamp\www\lookbook\class\class.UserSession.php on line 164
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 1 Dołączył: 25.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Stworzyłeś obiekt w konstruktorze, więc ma on zasięg jedynie wewnątrz konstruktora. Musisz stworzyć w klasie zmienną, do której będziesz go przypisywał, żeby móc odwoływać się do niego w dowolnej funkcji w klasie.
Dodajesz więc, np. w linii 13.:
A pierwszą linię z konstruktora (15.) zamieniasz na:
No i oczywiście wszystkie odwołania do $objDB zmieniasz na $this->objDB. Database::select() działa, ponieważ jest to metoda statyczna, więc nie wymaga utworzenia instancji klasy Database. Swoją drogą, co to za książka, w której dają przykłady klas, nie tłumacząc sposobu ich funkcjonowania? Manual: http://php.net/manual/en/language.oop5.php Ten post edytował PotasK 12.05.2012, 18:48:30 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jak użyjesz http://translate.google.pl/ to większość z tych błędów będzie dla Ciebie zrozumiała. Angielski to podstawa, jeżeli chcesz być programistą, więc im szybciej sam zaczniesz walczyć z takimi prostymi rzeczami (gdzie rozwiązanie wynika bezpośrednio ze zdania), to naprawdę zaprocentuje na przyszłość. Tym bardziej, że po pewnym czasie do takich błędów się przyzwyczaisz, bo przynajmniej na początkach często się powtarzają
![]() -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 4 Dołączył: 9.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Stworzyłeś obiekt w konstruktorze, więc ma on zasięg jedynie wewnątrz konstruktora. Musisz stworzyć w klasie zmienną, do której będziesz go przypisywał, żeby móc odwoływać się do niego w dowolnej funkcji w klasie. a załóżmy, że mamy taka funkcję, w jaki sposób np w innym pliku przypisać do zmiennej $wynik zawartość tablicy zwracanej przez funkcję(ta funkcja jest składową klasy)? w tym przypadku, zwracana jest tablica $row i ja ją teraz przypisać do zmiennej $tablica
Ten post edytował brzoza91 20.05.2012, 17:37:28 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 1 Dołączył: 25.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Yyy, nie wiem, czy do końca zrozumiałem, ale:
Jeśli jednak chcesz przypisać do zmiennej $wynik w innej klasie to kolejno: Zmianna $wynik z dostępem publicznym:
Zmienna $wynik statyczna, z dostępem publicznym:
A w przypadku zmiennej $wynik z dostępem prywatnym lub chronionym, trzeba w klasie utworzyć metodę:
I wywołać:
Jeśli chodziło Ci o coś innego, to proszę, sprecyzuj. Ten post edytował PotasK 21.05.2012, 09:59:00 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 4 Dołączył: 9.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
chodzi mi o to
lecz, gdy wyświetlę potem $wynik np. tak : to nic się nie wyświetla, a powinna być wyświetlona tablica z wiadomościami które zostają zwrócone z funkcji. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 1 Dołączył: 25.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
A wyeliminowałeś wszystkie błędy? Jeśli tak, to spróbuj na początku skryptu jeszcze dodać:
Zamień też print_r() na var_dump() i podaj co Ci się wyświetla. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:20 |