어제, 나는 question에 따라 Zend_AMF를 사용하여 PHP 응용 프로그램에서 플렉스 프런트 엔드로 형식이 지정된 객체를 보내는 데 성공했습니다.플렉스에서 PHP 로의 형식화 된 객체
지금 직면하고있는 문제는 플렉스에서 PHP로 입력 된 객체를 보내고 PHP 측에서 stdClass
대신 입력 된 객체로 보낼 수 있다는 것입니다. 여기
package com.mysite
{
[Bindable]
[RemoteClass(alias="CTest")]
public class CTest
{
public var stuff1:String;
public var stuff2:String;
public function CTest()
{
}
}
}
을 그리고 이것은 PHP에서 해당 클래스입니다 :
var remoteObject:RemoteObject = new RemoteObject();
remoteObject.endpoint = "http://localhost/to/my/amf/endpoint";
remoteObject.showBusyCursor = true;
remoteObject.source = 'testing';
var op:AbstractOperation = remoteObject.getOperation(null);
op.addEventListener(ResultEvent.RESULT, result);
op.send(new CTest());
: 내가 지금과 같은 개체를 보내고 플렉스에서
<?php
namespace modules\testing;
class CTest{
var $_explicitType = 'CTest';
var $stuff1;
var $stuff2;
}
PHP 측에서는 객체가 $parameters
이라는 변수로 검색됩니다. 그때 파일에 결과를 기록하는 데에 print_r의 사용
$z = print_r($parameters, true);
$s = fopen('D:\test.txt', 'w+');
fwrite($s, $z);
fclose($s);
하고
볼 수있다, 그 결과는 다시 지정되지 않은 제공하고stdClass
객체입니다 일부 테스트 후
Array
(
[0] => stdClass Object
(
[stuff1] =>
[stuff2] =>
)
)
, PHP 개체에서 네임 스페이스를 제거하고이를 전역 네임 스페이스로 옮겼습니다. 이것은 문제를 해결 한 것으로 보인다. 나는 RemoteClass
을 \modules\testing\CTest
그리고 또한 modules.testing.CTest
으로 설정하려고 시도했다. $_eplicitType
은 두 테스트에 대해 동일한 값으로 설정되었습니다.
modules.testing.CTest
을 사용하면 Zend_AMF가 보는 클래스 이름이됩니다. 네임 스페이스 표기법을 사용하면 모든 슬래시가 제거되므로 Zend_AMF는 modulestestingCTest
을 봅니다.
하지만 어떻게 PHP 네임 스페이스로이 작업을 할 수 있습니까?
만약 내가 당신을 두 번 투표 할 수 있습니다 :) PHP에서 플렉스로 개체를 보내는 것에 관한 내 관련된 질문 : http://stackoverflow.com/questions/9555397/flex-is-deserializing-generic-objects-from- zend-amf-of-strictly-typed-ob – pixel