Czy ktoś z Was wie jak odczytać nazwy pól obiektu, jeśli były one ustawiane metodą __set?

Zależy mi na takim oto rozwiązaniu: Mam klasę View(). Dla obiektu tej klasy w kontrolerze ustawiam różne dane. Ponieważ może być ich zmienna liczba, dlatego nie chcę towrzyć stałych pól np $model1, $model2, zamiast tego używam metody __set do ich ustawiania. Teraz w metodzie show() chcę odczytać nazwy tych pól i przypisać je do szablonu Smarty. Próbowałem to zrobić funkcją get_class_vars(get_class($this)) ale okazało się, że odczytuje ona tylko pola predefiniowane wcześniej w klasie. Pól ustawionych za pomocą __set nie widzi

Jeśli ktoś ma jakiś pomysł będę wdzięcny.
Oto kod:
<?php abstract class View { public function __construct() { } public function __set($pole, $extra_model) { $this->$pole = $extra_model; } function __get($nazwa) { return $this->$nazwa; } } class HTMLView extends View { protected $smarty; public function __construct() { parent::__construct(); $this->smarty = new Smarty(); } public function show() { $fields = get_class_vars(get_class($this)); foreach ($fields as $name => $value) { if ($name!='tamplate' && $name!='smarty') { $pole = "'".$name."'"; $this->smarty->assign($pole, $name); } } $this->smarty->display($this->tamplate); } public function __call($name,$param) { } } ?>
A oto przykład użycia w kontrolerze:
<?php $hview = new HTMLView(); $hview->lista = $lista; $hview->tamplate="'".$this->tpl_prefix."list.tpl'"; $hview->show(); ?>
Myslę, że sprawa jest warta zachodu, bo czy przypiszemy jedną listę czy 15, klasa HTMLView za nas robiłaby całe przypisanie do Smarty. Poza tym kod jest zupełnie niezależny od danych pobranych z modelu.