【问题标题】:How to output variable inside an object in PHP如何在PHP中的对象内输出变量
【发布时间】:2016-04-28 13:34:15
【问题描述】:

我正在尝试在 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_arrayIDs 的数组,我需要来自$json_outputregexed。如何访问 $json_output 以在我的 preg_match_all 函数中使用?

我是使用类/对象的新手,如果这是一个愚蠢的问题,我深表歉意。

任何 cmets 将不胜感激!

山姆

【问题讨论】:

  • 您需要设置$this->json_output = ...,而不是$json_output = ...
  • 您是否有任何理由使用正则表达式从 JSON 读取值,而不是使用 json_decode()?
  • @iainn。我正在遍历一个可变长度的 JSON 数组,因此我无法使用 json_decode 可靠地提取我需要的内容。
  • @MohammedShafeek 谢谢你,我会熟悉那个帖子

标签: php class oop methods


【解决方案1】:

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

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]);

【讨论】:

    【解决方案2】:

    像这样。您创建类变量,然后使用$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);
         }
      };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多