2012-01-30 4 views
1

우리는 ZEND Framework로 API를 개발하고 있습니다. 여기에 내가 상상 예를 들어 응답

$this->getResponse() 
->setHttpResponseCode(200) 
->appendBody($this->_helper->json($client->toArray())); 

입니다 $이 -> _ 헬퍼> JSON 문자열 만 반환됩니다 JSON의 (dev에 환경) 배열을 반환.

이제 스테이지 서버를 가지고 놀 수 있으며 매우 동일한 코드가 JSON 문자열을 반환합니다.

dev 환경은 현재 다른 PHP 버전입니다 (dev는 5.3.1, 준비는 5.3.3 임). 이것이 원인입니까? 이 다른 버전이 JSON을 다르게 인코딩합니까? 왜 이런 일이 일어나는 지 아십니까? 또한 당신의 중첩 된 기능을 파괴하는 것이 현명했을 것이다이 경우

+0

아니는 JSON을 반환해야합니다. 다른 방법으로 그것을 배열로 되돌릴 수도 있습니다. $ this-> _ helper-> json ($ array)은 지금 Json을 반환하고, 액션을 완료하기를 기다리지 않습니다. PHP의 버전은이 문제와 관련이 없어야합니다. 5.3.8 또는 5.3.9로 업그레이드하는 것이 요청 개체를 악용하지 못하도록하는 좋은 방법입니다. – RockyFord

+0

빠른 응답을 보내 주셔서 감사합니다. 그것은 매우 이상합니다. 출력을 터치하고 배열로 변환하는 다른 함수는 없습니다. 이전 주석을 수정하면서 JSON이 자동으로 디코딩 된 것처럼 객체 배열을 반환한다고 말해야합니다. 스테이징 서버에서는이 작업을 수행하지 않습니다. http://stackoverflow.com/questions/689185/json-decode-returns-null-php에 따라 문자 인코딩 문제가 원인 일 수 있습니까? – JoshH2

+0

@RockFord는 문자열을 자동으로 json_decoding하는 함수가 있다는 점에서 정확합니다 (실수). 그러나 json_decode는 스테이징 서버에서 실패하므로 사실 디코딩에 실패하면 JSOn 문자열이 반환됩니다. 나는 stackoverflow.com/questions/689185/json-decode-returns-null-php에서 해결책을 사용하고있다. 그러나 이것을 피하기 위해 문자 인코딩을 보장하는 것이 또 하나있다. – JoshH2

답변

0

별도의 전화로 호출하고 예상대로 내부 내용이 작동하는지 확인하기 위해 각각의 결과를 위해서 var_dump :

$response = $this->getResponse(); 
$setResponseReturn = $response->setHttpResponseCode(200); 
$clientArray = $client->toArray(); 
var_dump($response, $setResponseReturn, $clientArray);die; 

//->appendBody($this->_helper->json($client->toArray())); 
관련 문제