POST를 통해 전송 된 XML 문서를 처리하기 위해 무언가를 작성해야합니다. 이 문서는 내부에 Base-64로 인코딩 된 바이너리를 가지고 있기 때문에 요청이 상당히 클 수 있습니다.Zend Diactoros PhpInputStream (PSR-7 StreamInterface)이 fopen과 같은 함수로 래핑 된 패스 스트림?
$document = simplexml_load_file('php://input');
하지만 난 정말이 같은 일을해야하므로 젠드 Diactoros PSR-7 구현을 사용하고 있습니다 :
이 작동하지만
$request = Zend\Diactoros\ServerRequestFactory::fromGlobals();
$document = simplexml_load_file($request->getBody());
,로 스트림을 발생 오류가 발생하는 문자열로 캐스트하십시오.
$document = simplexml_load_file($request->getBody()->stream);
때문에 :
var_dump($request->getBody());
object(Zend\Diactoros\PhpInputStream)#5 (4) {
["cache":"Zend\Diactoros\PhpInputStream":private] => string(0) ""
["reachedEof":"Zend\Diactoros\PhpInputStream":private ] => bool(false)
["resource":protected] => resource(4) of type (stream)
["stream":protected] => string(11) "php://input"
}
그러나주의 ->stream
가 보호
는 내가 정말 필요한 것은 무엇인가 같다. 그냥 Zend\Diactoros\PhpInputStream
을 확장하고 공개 메소드를 작성하여 ->stream
을 표시해야합니까? 아니면 더 좋은 방법이 있습니까?
있습니다 : 나는 스트림 기반 솔루션을 찾고 있어요; 전체 스트림을 문자열로 메모리로 읽지 않습니다.