0

我提出了一个 curl 请求。我将 curl 指令放在一个类函数中:

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;
  }

我将数据库查询放在另一个类函数中。

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;
  }

在 index.php 中,来自 webhook 的 HTTP 帖子正在通过,其中处理通过一些字符串解析以获取 2 个 id。然后我将其中一个 id 发送到 mongodb curl 请求,一切顺利。正确的响应回来了,我只知道 curl 类中 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;

好的,我添加了返回,我可以看到数据,但是没有操作对返回的数据起作用。

编辑 ---> 将 return 放入两个类中,现在它已完全可操作。

4

2 回答 2

1

仅仅因为您正在为类变量赋值data并不意味着当您调用函数 getRequest 时会返回该值。因此,为了使用来自外部类的数据,您需要return最终值:

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,除非您的代码中有更多未显示的内容,否则您可以简单地返回curl_exec($ch)

要从下面的评论中进一步回答您的问题,这来自php.net

此函数显示有关一个或多个表达式的结构化信息,包括其类型和值。使用缩进显示结构的值递归地探索数组和对象。

如您所见,var_dump仅用于显示目的

于 2013-03-23T15:04:38.957 回答
1

正如lazyhammer 所说,您需要在方法 GetRequest($url) 的末尾编写以下内容

return $this->data;

此外,在一个类中, afunction被称为 a method

更明确地说。

var_dump不返回数据。它只是将它们发送到将显示它的客户端(您的浏览器)。

要将方法中计算的数据返回给调用者,您需要return在方法末尾使用关键字。当您的计算机将看到return他将数据带回给呼叫者时。这意味着您编写的所有内容return都不会被执行。

于 2013-03-23T15:07:01.643 回答