Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: deklaracja obiektu jednej klasy wewnątrz drugiej
Forum PHP.pl > Forum > PHP
Everizon
Witam
prosty i wydawałoby się oczywisty przykład ale nie działa...
Kod
     class C_osoba {
         var $imie;
         var $nazwisko;
         function pokaz(){
             echo $imie.' - '.$nazwisko;
         }
     }
    
     class C_zamowienie {
         var $zamowienie_uid;
         var $przedmiot_id;
         var $osoba= new C_osoba;
     }


chcę tak zrobić by po deklaracji w kodzie:
Kod
   $zamowienie=new C_zamowienie;

używać:
Kod
   $zamowienie->przedmiot_id=666;
   $zamowienie->osoba->imie="Nefretete";

niestety otrzymuję komunikat:
Parse error: syntax error, unexpected T_NEW in H:\AppServ\www\klasa.php on line 16
gdzie linia 16 to linia z klasy C_zamowienie o teści:
Kod
var $osoba= new C_osoba;

Dlaczego nie mogę zadeklarować obiektu klasy C_osoba wewnątrz innej klasy jak zwykłej zmiennej ?
Jeżeli nie można to jak mogę to osiągnąć ? używam złej składni ?
Zaznaczam że nie chcę dziedziczyć klasy C_osoba w klasie C_zamowienie ponieważ potrzebuję jeszcze zadeklarować inne obiekty innych klas (np. C_przedmiot, C_reklamacje) a dziedziczenie wielokrotne w php nie działa.
Dlatego docelowo wyglądałoby tak: (ale nie działa jak w c++)
Kod
class C_zamowienie {
     ...
     var $osoba= new C_osoba;
     var $przedmiot= new C_przedmiot;
     var $reklamacje= new C_reklamacje;
     ...
     }

Proszę o pomoc.
Crozin
OOP w PHP jest dosyć ograniczone. Swoją drogą nie korzystaj z reliktu jakim jest "var".
  1. <?php
  2.  
  3. class Osoba{
  4.  private $imie;
  5.  private $nazwisko;
  6.  
  7.  public function pokaz(){
  8.    return $this->imie . ' ' . $this->nazwisko;
  9.  }
  10. }
  11.  
  12. class Zamowienie{
  13.  private $osoba;
  14.  
  15.  public function __construct(){
  16.    $this->osoba = new Osoba();
  17.  }
  18. }
  19. ?>
http://pl.php.net/manual/pl/language.oop5.php
Everizon
Proste i genialne.
W dodatku ładniej wygląda smile.gif
Dziękuję bardzo i pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.