我正在尝试创建一个使用cURL向Twitter API发出请求的类。我已经在PHP中对面向对象编程做了一些研究,我无法弄清楚它应该如何工作。以下代码返回NULL:
<?php
class twitter {
public function curlQuery($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
$json = curl_exec($ch);
curl_close($ch);
$array = json_decode($json);
return var_dump($array);
}
}
$object1 = new twitter;
$object1->url = "http://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=twitterapi&count=2";
$object1->curlQuery($object1->url);
?>
另外,我不确定何时在PHP类中使用$this->variable
vs $variable
。不应该将类中提到的所有变量都引用为$this->variable
吗?你为什么不想引用当前对象的变量?
答案 0 :(得分:4)
那么,为什么要将url存储在对象中,然后将该变量作为参数传递给同一个对象的方法?似乎毫无意义,因为那时你可以做一些像:
$object1->url = 'blahblahblah';
$object1->curlQuery(); // <---note, no parameter
然后在curlQuery方法中:
curl_setopt($ch, CURLOPT_URL, $this->url);
至于$this->variable
v.s. PHP中的$variable
,$this->variable
使该变量成为对象的成员。它将可用于对象中的所有方法。 $variable
本身只是一个方法中的局部变量。当该方法返回时,局部变量将被销毁,并且不再可用于其他方法。
简而言之,使用$this->variable
来保存对象中持久存在的内容以及多个方法调用。使用$variable
在单个方法中进行临时存储。
答案 1 :(得分:2)
当变量被定义为类的属性时,在成员函数中使用它们时,您应该使用$ this-&gt; variablename。但这并不意味着: 类中提到的所有变量都被引用为$ this-&gt; variable
您可以以其他方式在成员函数中使用局部变量。它将在定义的特定函数内具有范围。
喜欢
class twitter
{
var $apikey;
function displayKey()
{
$k = 1;
$this->apikey += $k;
echo $this->apikey;
}
}
为了引用apikey,我们使用$ this-&gt; apikey,对于函数内部的局部变量,我们使用相反的方法。