在PHP类中创建cURL方法

时间:2012-06-09 05:22:05

标签: php oop curl

我正在尝试创建一个使用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吗?你为什么不想引用当前对象的变量?

2 个答案:

答案 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,对于函数内部的局部变量,我们使用相反的方法。