Flex PHP数据服务类型未强制转换

Flex 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(),并重新运行数据向导,则必须为类命名,但转换工作

我在从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.php

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服务生成的类。