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):
<?php abstract class obj_1{ public $zmienna_obj_1; public function __construct(){ $this->zmienna_obj_1 = \"należę do obiektu 1\"; } public function debug(){ foreach ($this as $nazwa => $zmienna) { } } } class obj_2 extends obj_1 { private $zmienna_obj_2; public function __construct(){ parent::__construct(); $this->zmienna_obj_2 = \"należę do obiektu 2\"; $this->debug(); } } $obj_2 = new obj_2(); ?>
powyższy przykład generuje:
Ponieważ w php nie ma czegoś takiego jak 'child' nie wiem co z tym zrobić. Ktoś ma jakiś pomysł jak to obejść?