Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Tablice klas wewnątrz klasy..., ... czyli dlaczego wyświetla tak, a nie inaczej
lood
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.07.2009

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


Dobry. Napisałem sobie dwie proste klasy dla testu, które wyglądają tak:
  1. <?php
  2.   class prod
  3.   {
  4.        var $nazwa, $cena;
  5.    
  6.        function write()
  7.        {
  8.            echo $this -> nazwa.": ".$this -> cena."$ <br>";
  9.        }
  10.   }
  11.  
  12.   class lista
  13.   {
  14.        private $produkty = array();
  15.        
  16.        public function __construct()
  17.        {
  18.            $this -> produkty = array();
  19.            
  20.            $this -> produkty[0] = new prod;
  21.            $this -> produkty[0] -> nazwa = "jablko";
  22.            $this -> produkty[0] -> cena = 1;
  23.            $this -> produkty[0] -> write();
  24.            
  25.            $this -> produkty[1] = new prod;
  26.            $this -> produkty[1] -> nazwa = "gruszka";
  27.            $this -> produkty[1] -> cena = 2;
  28.            $this -> produkty[1] -> write();
  29.        }
  30.        
  31.        public function show()
  32.        {
  33.            $this -> produkty[0] -> write;
  34.            $this -> produkty[1] -> write;
  35.        }
  36.   }
  37. ?>


No i potem tego czegoś używam:
  1. <?php
  2.   $a = new lista;
  3.   $a -> show();
  4. ?>


Oczekiwanym przeze mnie efektem było więc:
Kod
jablko: 1$
gruszka: 2$
jablko: 1$
gruszka: 2$


... ale jak to często w życiu bywa dostaję coś innego niż to co chciałem:
Kod
jablko: 1$
gruszka: 2$


Tutaj gość miał podobny problem, ale ja jego błędów nie popełniłem. Pytanie brzmi: czemu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
planet
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 6
Dołączył: 15.07.2009
Skąd: Śląsk->Ruda Śląska

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


Cytat
ja jego błędów nie popełniłem


a jak w takim razie wytłumaczysz to:

  1. <?php
  2. var $nazwa, $cena;
  3. ?>


powinno być public/protected/private ...

a co do reszty to według mnie powinno być tak (odwołanie do metody a nie do atrybutu):
  1. <?php
  2. public function show()
  3.       {
  4.           $this -> produkty[0] -> write();
  5.           $this -> produkty[1] -> write();
  6.       }
  7. ?>


Ten post edytował planet 17.07.2009, 13:58:51
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 04:58