如何在 PHP 中输出对象内的变量


How to output variable inside an object in PHP

我正在尝试在PHP中的对象内部使用变量。

我尝试像$object->json_output一样访问变量,但我收到未定义的属性错误。我希望对此输出进行正则表达式并提取稍后将使用的数据。

我的代码是:

class curl
  {
     public function curlPut($url, $JSON, $token)
     {
        $ch = curl_init($url);
        $popt = array(
           CURLOPT_CUSTOMREQUEST => 'PUT',
           CURLOPT_RETURNTRANSFER => TRUE,
           CURLOPT_SSL_VERIFYPEER => false,
           CURLOPT_POSTFIELDS => $JSON,
           CURLOPT_HTTPHEADER => array(
              'Content-Type: application/json',
              'Authorization:'.$token.''
           ));
        curl_setopt_array($ch, $popt);
        $json_output = curl_exec($ch);
        curl_close($ch);
        return var_dump($json_output);
     }
  };
$object1 = new curl;
$object1->curlPut($url, $JSON, $token);
preg_match_all('/"id":"([0-9]*)/', $object1->json_output, $idtest);
$id_array[] = array(
  'id' => $idtest[1]
);

其中$json_output是我需要访问的变量,$id_array是我需要从$json_output regexed IDs数组。如何访问要在preg_match_all函数中使用的$json_output

我是使用类/对象的新手,所以如果这是一个愚蠢的问题,请道歉。

任何意见将不胜感激!

山 姆

您必须在类上设置一个属性,如下所示:

class Test {
  public $json_output = 'Test';
}
$test = new Test();
echo $test->json_output; // output: Test;

该属性必须public,而不是privateprotected才能在类外部访问。


您的代码应如下所示:

class curl {
  public $json_output = '';
  public function curlPut($url, $JSON, $token) {
    $ch = curl_init($url);
    $popt = array(
      CURLOPT_CUSTOMREQUEST => 'PUT',
      CURLOPT_RETURNTRANSFER => TRUE,
      CURLOPT_SSL_VERIFYPEER => false,
      CURLOPT_POSTFIELDS => $JSON,
      CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json',
        'Authorization:'.$token.''
      ));
    curl_setopt_array($ch, $popt);
    $this->json_output = curl_exec($ch);
    curl_close($ch);
  }
}

$object1 = new curl();
$object1->curlPut($url, $JSON, $token);
preg_match_all('/"id":"([0-9]*)/', $object1->json_output, $idtest);       
$id_array[] = array('id' => $idtest[1]);

像这样。创建类变量,然后使用 $this->json_output 进行设置。之后,可以通过 $object->json_output .

class curl
  {
     public $json_output;                            //Added by tilz0R
     public function curlPut($url, $JSON, $token)
     {
        $ch = curl_init($url);
        $popt = array(
           CURLOPT_CUSTOMREQUEST => 'PUT',
           CURLOPT_RETURNTRANSFER => TRUE,
           CURLOPT_SSL_VERIFYPEER => false,
           CURLOPT_POSTFIELDS => $JSON,
           CURLOPT_HTTPHEADER => array(
              'Content-Type: application/json',
              'Authorization:'.$token.''
           ));
        curl_setopt_array($ch, $popt);
        $this->json_output = curl_exec($ch);         //Edit by tilz0R $this-> added
        curl_close($ch);
        return var_dump($json_output);
     }
  };