Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z dziedziczeniem, czemu nie ma 'child' ??
Bachus
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 13.02.2004
Skąd: Przasnysz

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


Mam dwa obiekty. Jeden służy do inicjacji konfiguracji, obiektów pomocniczych, tworzenia instancji singletonów i innych drobnych rzeczy. Wszystkie obiekty w skrypcie dziedziczą z tego obiektu. Drugi obiekt dziedziczy z pierwszego i służy do wykonania konkretnego zadania.

Chciałem dodać (do pierwszego obiektu) wywoływaną zawsze z kontekstu drugiego obiektu prostą funkcję wyświetlającą print_r dla wszystkich zmiennych obiektu (żeby łatwiej było mi pisać i debugować). I tu napotkałem problem.

Jeśli funkcja jest zadeklarowana w obiekcie pierwszym, to mimo tego, że wywoływana jest z obiektu drugiego, $this odwołuje się do obiektu pierwszego.

Przygotowałem odrobinę kodu dla zilustrowania problemu (php5):

  1. <?php
  2. abstract class obj_1{
  3. public $zmienna_obj_1;
  4.  
  5. public function __construct(){
  6. $this->zmienna_obj_1 = &#092;"należę do obiektu 1\";
  7. }
  8.  
  9. public function debug(){
  10. echo &#092;"<pre>\";
  11. echo __CLASS__.&#092;"n\";
  12. foreach ($this as $nazwa => $zmienna) {
  13. echo $nazwa.&#092;": \";
  14. print_r($zmienna);
  15. echo &#092;"n\";
  16. }
  17. echo &#092;"</pre>\";
  18. }
  19. }
  20.  
  21. class obj_2 extends obj_1 {
  22.  
  23. private $zmienna_obj_2;
  24.  
  25. public function __construct(){
  26. parent::__construct();
  27. $this->zmienna_obj_2 = &#092;"należę do obiektu 2\";
  28. $this->debug();
  29. }
  30. }
  31.  
  32. $obj_2 = new obj_2();
  33. ?>


powyższy przykład generuje:

  1. <pre>
  2. obj_1
  3. zmienna_obj_1: należę do obiektu 1
  4. </pre>


Ponieważ w php nie ma czegoś takiego jak 'child' nie wiem co z tym zrobić. Ktoś ma jakiś pomysł jak to obejść?
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: 22.08.2025 - 13:24