Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tworzenie obiektu na podstawie innego obiektu
ayeo
post 11.04.2008, 12:37:07
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!
Mam taki problem... (skąd my to znamy? winksmiley.jpg )

Mam obiekt USER i dziedziczący po nim STUDENT. Obiekt USER tworzy się automatycznie w mechanizmie sesji. Czasem jednak zachodzi potrzeba "rozbudowania" tego obiektu do STUDENT'a biggrin.gif I teraz jest takie pytanie jak zmienić istniejący obiekt USER na dziedziczący po nim STUDENT?

Z góry dzięki. Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ayeo
post 12.04.2008, 19:59:39
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Prywatne właściwości są po to, żeby uniemożliwić zmianę ich wartości z zewnątrz. Ja je poprostu przepisuję do instancji klasy dziedziczącej...

EDIT:
ehh, trochę się wygłupiłem. biggrin.gif Żeby poustawiać prywatne właściwości i tak muszę mieć jakąś metodę dostępową co rzeczywiście nie pasuje do podejścia obiektowego. Tak to wygląda:
  1. <?php
  2. class A
  3. {
  4. private $a;
  5. protected $b;
  6. public $c;
  7.  
  8. function __construct($a, $b, $c)
  9. {
  10. $this->a = $a;
  11. $this->b = $b;
  12. $this->c = $c;
  13. }
  14.  
  15. protected function getVariables()
  16. {
  17. return get_object_vars($this);
  18. }
  19.  
  20. protected function setVariable($var,$value)
  21. {
  22. $this->$var = $value;
  23. }
  24. }
  25.  
  26. class B extends A
  27. {
  28. public function __construct($objA)
  29. {
  30. foreach($objA->getVariables() as $key => $value)
  31. {
  32. $this->setVariable($key, $value);
  33. }
  34.  
  35. }
  36.  
  37.  
  38. }
  39.  
  40.  
  41. $obj= new A('pierwsza', 'druga', 'trzecia');
  42. $obj = new B($obj);
  43.  
  44. var_dump($obj); // ["a:private"]=>"pierwsza" ["b:protected"]=>"druga" ["c"]=>"trzecia"
  45. ?>


Brakuje mi możliwości tworzenia obiektu klasy dziedziczącej na podstawie instancji klasy rodzica z zachowaniem wartości wszystkich właściwości (ale zdanie) więc musi tak to zostać... jednak rozumiem bezsens tego rozwiązania :/

Pozdrawiam i czekam na ewentualne wnioski/propozycje/sugestie/rady/bluzgi

Ten post edytował ayeo 12.04.2008, 21:26:07


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2025 - 07:50