есть такой код Код (Text): class ymaps { var $key; var $items = array(); //переменные, необходимые для парсинга var $elements; var $geoobject_idx; function ymaps($key = null) { $this->key = $key; } function load($geocode, $key = null) { //собственно геокодирование if ($key != null) { $this->key = $key; } if ($this->key != null) { //чистим массив гео-объектов $this->items = array(); //определяем базовый url $base_url = "http://geocode-maps.yandex.ru/1.x/?key={$this->key}"; //определяем url запроса, при этом кодируем адрес $request_url = $base_url . "&geocode=" . urlencode($geocode); //отправляем запрос, в ответ получаем xml $data = file_get_contents($request_url); //парсим xml $parser = xml_parser_create(); xml_set_element_handler($parser, "ymaps::startElement", "ymaps::endElement"); xml_set_character_data_handler($parser, "ymaps::stringElement"); xml_parse($parser, $data, true); xml_parser_free($parser); } } //функции для парсинга function startElement($parser, $name, $attrs) { array_push($this->elements, $name); if ($name == "GeoObject") { $this->geoobject_idx = count($this->items); $this->items[] = array(); } } function endElement($parser, $name) { array_pop($this->elements); } function stringElement($parser, $str) { $name1 = count($this->elements) > 0 ? $this->elements[count($this->elements) - 1] : ""; $name2 = count($this->elements) > 1 ? $this->elements[count($this->elements) - 2] : ""; $name3 = count($this->elements) > 2 ? $this->elements[count($this->elements) - 3] : ""; if (($name1 == "kind") && ($name2 == "GeocoderMetaData") && ($name3 == "metaDataProperty")) { $this->items[$this->geoobject_idx]["kind"] = $str; } elseif (($name1 == "text") && ($name2 == "GeocoderMetaData") && ($name3 == "metaDataProperty")) { $this->items[$this->geoobject_idx]["text"] = $str; } elseif (($name1 == "lowerCorner") && ($name2 == "Envelope") && ($name3 == "boundedBy")) { $this->items[$this->geoobject_idx]["lowerCorner"] = $str; } elseif (($name1 == "lowerCorner") && ($name2 == "Envelope") && ($name3 == "boundedBy")) { $this->items[$this->geoobject_idx]["upperCorner"] = $str; } elseif (($name1 == "pos") && ($name2 == "Point")) { $this->items[$this->geoobject_idx]["pos"] = $str; } } } он конечно же не работает.... вызов функций ymaps::startElement, ymaps::endElement и ymaps::stringElement при парсинге происходит как общий вызов функций.. и само-собой $this->items объекта и всё остальное, что с объектом связано - недоступно.... подскажите, если кто сталкивался, как это лечится.... или может кам-то другим путём идти тут надо? заранее благодарен...