Flex PHP数据服务类型未强制转换
我在从Flex4.6数据服务返回本机PHP类时遇到问题 当我返回一个包含另一个PHP类(CustomerData)数组的PHP类(CustomerData Response)时,我无法在PHP中强制转换CustomerData类。数据服务向导可以正确地检测类,测试服务也可以正常工作,但是当我在调试器中点击customers数组时,它似乎充满了一个对象数组,而不是CustomerData数组 如果我将PHP更改为返回具有相同成员的stdClass(),并重新运行数据向导,则必须为类命名,但转换工作正常 此外,cr.lastResult的转换工作正常,只有cr.customers.getItemAt(0)似乎是一个对象,而不是customemrdata。我还确认了是的,getITemAt(0)不为null 有什么建议吗?我可以使用stdClass,但是使用PHP类更好 PHP类(为简洁起见进行了修剪) CustomerData.phpFlex PHP数据服务类型未强制转换,php,apache-flex,class,casting,dataservice,Php,Apache Flex,Class,Casting,Dataservice,我在从Flex4.6数据服务返回本机PHP类时遇到问题 当我返回一个包含另一个PHP类(CustomerData)数组的PHP类(CustomerData Response)时,我无法在PHP中强制转换CustomerData类。数据服务向导可以正确地检测类,测试服务也可以正常工作,但是当我在调试器中点击customers数组时,它似乎充满了一个对象数组,而不是CustomerData数组 如果我将PHP更改为返回具有相同成员的stdClass(),并重新运行数据向导,则必须为类命名,但转换工作
class CustomerData {
public $name;
public $phoneNumber;
function __construct(){
//initialize some values
}
}
CustomerDataResponse.php:
require_once 'CustomerData.php';
class CustomerDataResponse {
public $message;
public $status;
public $customers;
function __construct() {
$this->message = "";
$this->customers = array(); //Array of CustomerData types
}
}
CustomerService.php
require_once("Models/CustomerDataResponse.php");
class CustomerInfoService {
private $customerDataResponse;
public function __construct() {
$this->customerDataResponse = new CustomerDataResponse();
}
public function getCustomerData(){ //Called from Flex App
$this->customerDataResponse->customers[] = new CustomerData();
return $this->customerDataResponse;
}
FlexApp:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
initialize="initializeHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.rpc.CallResponder;
import mx.rpc.events.ResultEvent;
import services.customerinfoservice.CustomerInfoService;
import valueObjects.CustomerData;
import valueObjects.CustomerResponseData;
private var cr:CallResponder = new CallResponder();
private var service:CustomerInfoService = new CustomerInfoService()
protected function initializeHandler(event:FlexEvent):void{
cr.addEventListener(ResultEvent.RESULT,handleResult);
cr.token = service.getCustomerData();
}
protected function handleResult(event:ResultEvent):void{
var crd:CustomerResponseData = cr.lastResult as CustomerResponseData; //This works fine
var cd:CustomerData = crd.customers.getItemAt(0) as CustomerData; //This leaves cd NULL
trace(cd.name); //Dies here: Cannot access a property or method of a null object reference
}
]]>
</fx:Script>
</s:Application>
显示您的客户端CustomerData
类。它有RemoteClass
元数据吗?我正在使用flash builder中的数据/服务选项卡中自动生成的元数据,但是当使用PHP类和stdClass()进行测试时,CustomerData.as、_CustomerDataEntityMetadata.as或_Super_CustomerData.as中不存在RemoteClass元数据标记。对不起;我不熟悉为php服务生成的类。