无法从变量中获取数据
我已经提出了一个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,从一个网络挂接的HTTP POST即将通过,在这种通过一些字符串解析,获取2个IDS被处理。然后我发送其中一个id到mongodb curl请求,一切都很顺利。正确的响应回来了,我只知道curly类中的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;
OK,我已经添加了回报,我可以看到数据,但没有操作上返回的数据工作。
编辑--->把这两个班的回报,现在它的全面运作。
正如lazyhammer说你需要写在你的方法的GetRequest($网址)结束下面
return $this->data;
此外,在一个班,一个function
被称为method
。
更加明确。
var_dump
不返回数据。它只是将它们发送到客户端(您的浏览器),它将显示它。
要将您的方法中计算的数据返回给调用方,您需要在方法结束时使用关键字return
。 当您的计算机将看到return
时,他将数据带回给调用者。这意味着您在return
之后所写的所有内容都不会被执行。
仅仅因为您正在为类变量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
仅用于显示目的。
那么为什么当我执行index.php脚本,我可以看到从var_dump返回的数据?这只是逗我,而不是让我真正玩它? – sirvon 2013-03-23 15:06:02
var_dump简单地(正如其名称所示)转储存储在名为'data'的类变量中的数据。但是,为了将这些数据发送到函数被调用的类,您需要“返回”它。 – 2013-03-23 15:07:35
'var_dump'通常用于调试目的,而不是任何事情,以便您可以查看某些数组或变量中存储了哪些数据。 – 2013-03-23 15:08:00
也许你需要'GetRequest()'返回''? – lazyhammer 2013-03-23 15:01:21
这正是我刚才说的.. – 2013-03-23 15:02:48