2016-04-28 11 views
0

Ich versuche eine Variable aus einem Objekt in PHP zu verwenden.Wie man Variable in einem Objekt in PHP ausgibt

Ich habe versucht, auf die Variable wie $object->json_output zugreifen, aber ich bekomme undefinierte Eigenschaft Fehler. Ich erwarte, diese Ausgabe neu zu berechnen und Daten zu extrahieren, die ich später verwenden werde.

Mein Code ist:

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

wo $json_output ist die Variable, ich brauche für den Zugriff auf und $id_array ist ein Array von IDs I regexed von $json_output benötigen. Wie würde ich auf $json_output zugreifen, um in meiner preg_match_all Funktion verwendet zu werden?

Ich bin neu in der Verwendung von Klasse/Objekte so Entschuldigungen, wenn dies eine dumme Frage ist.

Alle Kommentare würden sehr geschätzt werden!

Sam

+0

Statt '$ json_output = ...' Sie würde setzen müssen '$ this-> json_output = ...'. – Paul

+0

Gibt es einen Grund, warum Sie einen regulären Ausdruck verwenden, um einen Wert aus JSON zu lesen, anstatt json_decode() zu verwenden? – iainn

+0

das gemeinsame ans ist http://stackoverflow.com/questions/4361553/php-public-private-protected –

Antwort

2

Sie haben eine Immobilie auf Ihre Klasse wie folgt setzen:

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

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

Die Eigenschaft sein müssen außerhalb der Klasse public nicht private oder protected zuzugreifen.


Der Code sollte wie folgt aussehen:

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

So. Sie erstellen eine Klassenvariable und setzen sie dann unter Verwendung von $this->json_output. Danach ist es über $object->json_output erreichbar.

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