setItems(); } private function setItems() { $items = array( 0 => 'c', 1 => 'd', ); foreach ( $items as $k => $v ) { $class = b::getInstance( $v ); $this->items[ $k ] = $class; } } } class b { private $anchecstor = null; public function __construct() { } static public function getInstance( $type ) { $classname = 'lib_item_' . $type; if ( $itemclass = new $classname( ) ) { return $itemclass; } } /* want to remove...*/ public function setAnchestor( $obj ) { $this->anchstor = $obj; } public function getItemName() { /*here i need infomations about the top-level-object*/ return $this->anchestor->getParam('name') . 'i' . $this->getParam('name'); } } class b_c extends b { public function __construct() { parent::__construct(); } } class b_d extends b { public function __construct() { parent::__construct(); } } ?>