Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [class][php5] Cannot use object of type miasto as
krysk
post
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 20.04.2002
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Witam, zaczynam naukę obiektowego PHP5, na samym początku napotkałem już problemy - php zwraca błąd, które
  1. <?
  2. class miasto {
  3. public $id;
  4.  
  5. function __construct($id = 1){
  6. $this->id = $id;
  7. }
  8. // $miasto = mysql_fetch_array( sql("SELECT *, wojewodztwa.nazwa AS wojewodztwo, miasta.nazwa AS nazwa, FROM miasta, wojewodztwa WHERE `miasto.id`='". $this->id ."' AND miasta.wojewodztwo=wojewodztwa.id ") );
  9. //$miasto['wojewodztwo'] = 'aaa';
  10. //$miasto['nazwa'] = 'aaa';
  11. function sciezka(){
  12. global $miasto;
  13. return $miasto['wojewodztwo'] . ' / ' . $miasto['nazwa'] . '(' . $this->id . ')';
  14. }
  15.  
  16. }
  17. ?>


Zwraca mi błąd:
Kod
Fatal error: Cannot use object of type miasto as array in c:\wamp\www\class\miasto.class.php on line 12


Google nie wyrzucają żadnych istotnych informacji - pod jakim hasłem mogę szukać jakichkolwiek wskazówek?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Komunikat oznacza, że: Próbujesz użyć obiektu klasy miasto jako tablicy.
Nie możesz tego zrobić.
Napisz jeszcze która linijka z przedstawionego kodu jest tą 12-tą z komunikatu.
Go to the top of the page
+Quote Post
krysk
post
Post #3





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 20.04.2002
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Linia 12 to jest return...
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Prawdopodobnie zmienna $miasto to obiekt a Ty chcesz dostać sie do jego pól traktując go jako tablicę.

Żeby dostać się do pól wojewodztwo, nazwa musisz zrobić tak:
  1. <?php
  2. // ...
  3. return $miasto->wojewodztwo . ' / ' . $miasto->nazwa . '(' . $this->id . ')';
  4. // ...
  5. ?>


o ile to własnie w tym problem.
Go to the top of the page
+Quote Post
krysk
post
Post #5





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 20.04.2002
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Nie, to jest tablica. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cały kod jest wyżej, jak dla mnie to tam nie ma żadnych obietków wewnątrz klasy... Aczkolwiek z PHP5 to ja dopiero zaczynam, więc mogę się mylić.
Go to the top of the page
+Quote Post
ebe
post
Post #6





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 23.01.2004

Ostrzeżenie: (0%)
-----


abstrahując od tego czy to obiekt czy nie global bije po oczach, raczej nie używaj tego,a obiekt przekaż jako parametr metody

Ten post edytował ebe 21.09.2005, 22:37:26
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Dla pewnosci daj print_r( $miasto ) lub var_dump( $miasto ) przed returnem.

Co do global: da sie wszysztko napisac bez uzywania tej konstrukcji, a poza tym jest to zaprzeczenie programowania obiektowego.
Go to the top of the page
+Quote Post
splatch
post
Post #8





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ja dodam, że używanie GLOBAL w metodach jakiejkolwiek klasy to na prawdę zły nawyk, którego powinno się unikać. Z tąd niedaleka droga do korzystania z klas jako grup funkcji, które praktycznie nie mają nic wspólnego...

GLOBAL w klasach i funkcjach mówimy stanowcze NIE

Ten post edytował splatch 22.09.2005, 09:26:07
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Nie, to jest tablica.  Cały kod jest wyżej, jak dla mnie to tam nie ma żadnych obietków wewnątrz klasy...
Caly kod jest powyżej... Hmmm. Tylko w tym kodzie, a i owszem tworzyż zmienną miast, ale jest ona :
1) wykomentowana, a co za tym idzie wogóle nie deklarowana
2) użyta poza jakąkolwiek funkcją.

poazatym miasto tak nazywa sie twoja klasa, a ze nigdzie nie ma zmiennej $miasto, wiec on moze bieże sobie to jaką obiekt tej klasy. Któtko mówiąc Twoj kod nie trzyma się kupy
Go to the top of the page
+Quote Post
Sh4dow
post
Post #10





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 2005-09-22 10:31:52)
... poazatym miasto tak nazywa sie twoja klasa, a ze nigdzie nie ma zmiennej $miasto, wiec on moze bieże sobie to jaką obiekt tej klasy. Któtko mówiąc Twoj kod nie trzyma się kupy

nospor nie wpadajmy w paranoje podobienst nazw, wychodzilo by z tego ze to bug w php a tego nie podejzewam.
Niech pokaze wynik var_dump($miasto) po linijce z global (brrrrr rzeczywiscie jakos dziwnie sie czuje to widzac) i po tym bedzie mozna okreslic co jest nie tak i przydalo by sie zobaczyc cala klase tak jak dziala a nie wyklomentowana bog wie gdzie i jak.
Problem jest nie w pelni przedstawiony i tyle.
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




@Sh4dow pewnie masz rację. Akurat to zdanie pisałem bez większego przekonania. Mówi że cały kod jest podany, więc smaruję względem tego, ale pewnie jak zwykle nie wszystko nam pokazano.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 03:10