Working XML-PHP Class for Peer Review

FIRSTLY: I posted this originally at http://www.actionscript.org/forums/showthread.php3?t=200212. Please direct responses there, if possible as to consolidate the discussion. Thanks.

Hello,

This AS3 XMLManager class facilitates simple XML-PHP loading and saving on a server.
I am offering this working class free to the community.
All I ask for is complementary feedback and suggestions as thanks.

Some areas for concern may include:
_preserving the xml header and comments on loading
_are the error handlers correctly implemented?
_can/should error handling be incorporated into the php code?
_my Firefox threw an error when saving the xml

Download the Files Here:
http://drop.io/adamlach86#

data.xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<value>This could work better.</value>
</root>

savexml.php:

<?php

extract($_REQUEST);

$file = fopen($xmlURL,"w");
fwrite($file, $xmlData);
fclose($file);

echo($xmlData);

?>

XMLManager.as:

//
// LOAD AND SAVE XML USING PHP
//

/*
// EXAMPLE
import XMLManager;
var xmlMan:XMLManager = new XMLManager("savexml.php");
xmlMan.load("data.xml", onLoadHandler);

function onLoadHandler():void {
trace("Loaded:", xmlMan.url);
var myXML:Object = xmlMan.data;
myXML.appendChild("<value>This works like a charm!</value>");
xmlMan.save(myXML, "data.xml", onSaveHandler);
}

function onSaveHandler():void{
trace("Saved:", xmlMan.url)
returnText.text=xmlMan.data.toString();
}
*/

package {//
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLRequestMethod;
import flash.events.Event;
import flash.events.IOErrorEvent;

public class XMLManager{//

private var i:int;
private var phpURL:String;
private var _data:Object;
private var _url:Object;

// GETTERS & SETTERS
public function get data():Object {
return _data;
}
public function get url():Object {
return _url;
}

// CONSTRUCTOR
public function XMLManager($phpURL:String="savexml.php"):void {
phpURL = $phpURL;
trace(">> LOADED XMLManager");
}

// LOAD
public function load($xmlURL:String, $onLoadHandler:Function=null):void {
var xmlURLRequest:URLRequest;
xmlURLRequest = new URLRequest($xmlURL);
var xmlURLLoader:URLLoader = new URLLoader();

xmlURLLoader.addEventListener(Event.COMPLETE,
function(event:Event){onLoad($xmlURL, event.target.data, $onLoadHandler)}, false, 0, true);
xmlURLLoader.addEventListener(IOErrorEvent.IO_ERRO R, onIOError, false, 0, true);

xmlURLLoader.load(xmlURLRequest);
}

// ONLOAD
private function onLoad($xmlURL:String, $xmlData:Object, $onLoadHandler:Function=null):void {
try {
_url = $xmlURL;
_data = new XML($xmlData);

if ($onLoadHandler != null){
$onLoadHandler();
}
} catch (error:Error) {
trace("Connect Error:", error.toString());
}
}

// SAVE
public function save($xmlData:Object, $xmlURL:String, $onSaveHandler:Function=null):void {
var phpURLRequest:URLRequest = new URLRequest(phpURL);
var variables:URLVariables = new URLVariables();
variables.xmlURL = $xmlURL;
variables.xmlData = $xmlData;
phpURLRequest.data = variables;
phpURLRequest.method = URLRequestMethod.POST ;
var phpURLLoader:URLLoader = new URLLoader();

phpURLLoader.addEventListener(Event.COMPLETE, 
function(event:Event){onSave($xmlURL, event.target.data, $onSaveHandler)}, false, 0, true);	
phpURLLoader.addEventListener(IOErrorEvent.IO_ERRO R, onIOError, false, 0, true);

phpURLLoader.load(phpURLRequest);
}

// ONSAVE
private function onSave($xmlURL:String, $phpResponse:Object, $onSaveHandler:Function=null):void {
try {
_url = $xmlURL;
_data = new XML($phpResponse);

if ($onSaveHandler != null){
$onSaveHandler();
}
} catch (error:Error) {
trace("Write Error:", error.toString());
}
}

// ONIOERROR
private function onIOError(error:IOErrorEvent):void {
trace("Read Error:", error.toString());
}
}// END CLASS
}// END PACKAGE