2013-03-23 5 views
0

컬 요청을했습니다. 저는 한 클래스 함수에 컬 명령어를 넣었습니다 :변수에서 데이터를 가져올 수 없습니다.

class Curly { 
    var $data; 

    function GetRequest($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $this->data = curl_exec($ch); 
    curl_close($ch); 
    //this is what i was missing --> return $this->data; 
    } 

데이터베이스 쿼리를 다른 클래스 함수에 넣었습니다. 은 index.php

include('class.curly.php'); 

class mongoSearchForInfoOnEsd { 
    public function getEsdsFbInfo($esdID) { 
    $mongoApiKey = "xx"; 
    $requestParams= "xx"; 
    $url = "xx"; 

    $fbInfo = (new Curly)->GetRequest($url); 
    //this is what i was missing --> return $fbInfo; 
    } 

는은 webhook로부터 HTTP 포스트를 어떤 문자열을 파싱 처리 2 개 ID를 획득하기 위해, 관통오고있다. 그런 다음 해당 id 중 하나를 mongodb 컬 요청에 보내면 모든 것이 잘됩니다. 올바른 응답이 돌아 오면, 나는 단지이 곱슬 클래스의 var_dump의 var_dump의 b/c를 알지만 ....하지만 인덱스 파일에서 var에서 데이터를 가져 와서 그 값을 할당하는 데 어려움을 겪고 있습니다. 내가 원하는 모든 변수에.

어떻게 데이터를 가져올 수 있습니까? 나는 그곳을 알고 있지만, 어디서? 나는 너무 붙어있다.

# get ytID from http post 
#get EsdID from http post 
$httpPostData = file_get_contents('php://input'); 
$postDataDecoded = urldecode($httpPostData); 
$ytID = substr($postDataDecoded, strpos($postDataDecoded, "docid=") + strlen("docid="),); 
$esdID = substr($postDataDecoded, strpos($postDataDecoded, "m\": \"") + strlen ("m\": "),; 
*$esdData = (new mongoSearchForInfoOnEsd)->getEsdsFbInfo("$esdID");* 
$obj = json_decode($esdData, true); 
echo $obj; 

좋아, 반환을 추가하고 데이터를 볼 수 있지만 반환 된 데이터에 대한 작업이 없습니다.

편집 ---> 두 클래스에 모두 반환하고 이제 완전히 작동합니다.

+3

'GetRequest()'에'return'이 필요한가요? – lazyhammer

+0

그게 정확히 내가 말하려고했던 것입니다 .. –

답변

1

당신이

또한
return $this->data; 

, 수업 시간에하는 functionmethod라고 당신의 방법 대해 GetRequest ($의 URL)의 끝 부분에 다음과 같은 작성해야했다.

더 명확히 말하자면.

var_dump 데이터를 반환하지 않습니다. 브라우저 (브라우저)로 보내면 표시됩니다.

메서드에서 계산 된 데이터를 다시 호출자에게 반환하려면 메서드 끝에 return 키워드를 사용해야합니다. 컴퓨터에 return이 표시되면 데이터를 발신자에게 되돌려 보냅니다. return이 실행되지 않으면 작성한 모든 것을 의미합니다.

1

클래스 변수 data에 값을 할당했다고해서 getRequest 함수를 호출 할 때 값이 반환되고있는 것은 아닙니다.

function GetRequest($url){ 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $this->data = curl_exec($ch); 
    curl_close($ch); 

    return $this->data; 
} 

당신은 심지어 당신의 코드에 더는 당신이 그가없는 한, 주변의 변수 $data을 유지하기 위해 필요하지 않을 수 있습니다 따라서, 외부 클래스에서 데이터를 사용하기 위해, 당신은 return에 최종 값이 필요합니다 당신은 단순히 curl_exec($ch)

더 아래 댓글에서 귀하의 질문에 대답하기 위해 반환 할 수, 표시되지,이 php.net에서입니다 :

이 기능 표시 구성 정보에 대한 하나 이상의 표현 그 유형과 가치를 포함합니다. 배열과 객체는 구조를 보여주기 위해 들여 쓰기 된 값으로 재귀 적으로 탐구됩니다.

당신이 볼 수 있듯이, var_dump표시 목적으로에만 사용됩니다. lazyhammer으로

+0

그래서 index.php 스크립트를 실행할 때 왜 var_dump에서 반환되는 데이터를 볼 수 있습니까? 그것은 단지 나를 괴롭 히고 나를 실제로 그걸 가지고 노는 것을 허용하지 않습니까 ?? – sirvon

+0

var_dump는 (이름에서 알 수 있듯이)'data'라는 클래스 변수에 저장된 데이터를 덤프합니다. 그러나이 데이터를 함수가 호출 된 클래스에 보내려면 반환해야합니다. –

+0

'var_dump'는 대개 무엇보다도 디버깅 목적으로 사용되므로 어떤 배열이나 변수에 어떤 데이터가 저장되어 있는지 확인할 수 있습니다. –

관련 문제