2016-04-28 7 views
0

PHPのオブジェクトの内部から変数を使用しようとしています。PHPのオブジェクト内で変数を出力する方法

$object->json_outputのような変数にアクセスしようとしましたが、未定義のプロパティエラーが発生しています。私はこの出力を正規表現し、後で使用するデータを抽出することを期待しています。

私のコードは次のとおりです。$json_outputは、私がアクセスする必要があると$id_array変数である

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からregexed必要IDsの配列です。私のpreg_match_all機能で、$json_outputにアクセスするにはどうしたらいいですか?

これは愚かな質問の場合、私はクラス/オブジェクトを使用することにとても謝ります。

コメントをいただければ幸いです!

サム

+0

代わりに '$ json_output = ...'あなたが ''ます$ this-> json_output = ...を設定する必要がありますの。 – Paul

+0

json_decode()を使用するのではなく、JSONから値を読み取るために正規表現を使用する理由はありますか? – iainn

+0

common ansは@stackoverflow.com/questions/4361553/php-public-private-protected –

答えて

2

は、次のようなあなたのクラスのプロパティを設定する必要があります。

class Test { 
    public $json_output = 'Test'; 
} 

$test = new Test(); 
echo $test->json_output; // output: Test; 

プロパティは、クラスの外にアクセスするためにpublicないprivateまたはprotectedでなければなりません。


あなたのコードは次のようになります。

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]); 
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); 
    } 
    }; 
関連する問題