MAJOR AMF3 AMFPHP NetConnection BUG in AS3
If anyone is using my phpRemoting package, be aware there is a serious bug in AS3's AMF3 implementation and you need to switch the code in the phpAccess file to AMF0.
Here's what's up: The AMF3 encoder is fine sending an array out, and fine receiving a MySQL result set as an object. But if you try to send an array and receive a MySQL result in the same call, the result comes in as null.
Simple example:
Code:
var rs:NetConnection = new NetConnection();
/*uncommenting the following line makes the PHP request return an object. When it is commented, i.e. using AMF3, the PHP request returns null.*/
//rs.objectEncoding = flash.net.ObjectEncoding.AMF0;
rs.connect("http://localhost/~strike/barkNet/barknetamfphp/gateway.php");
var rsResponder:Responder = new Responder(gotResult, handleError);
var v:Array = new Array("a","b","c");
rs.call("genericEvent.arrayTest",rsResponder,v);
function gotResult(re:Object) {
trace (re); //returns Object under AMF0, null under AMF3
}
function handleError(fe:Object) {
}
Note that this has NOTHING to do with the PHP code being run. In fact, the PHP code is just this:
Code:
function arrayTest($arr) {
$q = "SELECT * FROM users";
$z = mysql_query($q);
return ($z);
}
Interestingly, if you have the code return $arr, you actually get the array right back under AMF3.
This is a dirty filthy bug that cost me a lot of time and money. BEWARE.
Josh