2016-04-28 2 views
0

Я пытаюсь использовать переменную изнутри объекта в 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 является массивом IDs мне нужно regexed от $json_output. Как мне получить доступ к $json_output, который будет использоваться в моей функции preg_match_all?

Я новичок в использовании класса/объектов, поэтому извиняюсь, если это глупый вопрос.

Любые комментарии были бы весьма признательны!

Сэм

+0

вместо '$ json_output = ...' вы должны установить '$ this-> json_output = ...'. – Paul

+0

Есть ли причина, по которой вы используете регулярное выражение для чтения значения из JSON, вместо использования json_decode()? – iainn

+0

общий анс http://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); 
    } 
    }; 
Смежные вопросы