我已经提出了卷曲请求。我将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请求,一切顺利。正确的响应回来了,我只知道卷曲类中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;
好的,我已添加了返回,我可以看到数据,但没有任何操作正在处理返回的数据。
编辑--->在两个班级中都有回报,现在它完全可以运作了。
答案 0 :(得分: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
仅用于显示目的。
答案 1 :(得分:1)
正如lazyhammer所说,你需要在方法GetRequest($ url)
的最后编写以下内容return $this->data;
此外,在课堂上,function
称为method
。
更明确。
var_dump
不会返回数据。它只会将它们发送到将显示它的客户端(您的浏览器)。
要将方法中计算的数据返回给调用者,您需要在方法的末尾使用关键字return
。
当您的计算机看到return
时,他会将数据恢复给来电者。它意味着在return
之后你写的所有东西都不会被执行。