jsonOpts() public static method

Set JSON decode mode
public static jsonOpts ( boolean $assoc = false, integer $depth = 512, integer $options ) : array
$assoc boolean When TRUE, returned objects will be converted into associative arrays.
$depth integer User specified recursion depth.
$options integer Bitmask of JSON decode options. Currently only JSON_BIGINT_AS_STRING is supported (default is to cast large integers as floats)
return array
Example #1
0
 /**
  *
  * @param array $param
  *                     data
  *                     url
  *                     method = 'GET'
  *                     headers = []
  * @return array
  */
 public function makeRequest($param)
 {
     //        Yii::info('makeRequest() ' . print_r($param, true));
     $aData = ['response' => null, 'statuscode' => 0];
     if (!isset($param['url'])) {
         return $aData;
     }
     $defaultParam = ['method' => 'GET', 'data' => [], 'headers' => []];
     foreach ($defaultParam as $k => $v) {
         if (!isset($param[$k])) {
             $param[$k] = $v;
         }
     }
     //        $client = new Client(['timeout' => 20]);
     $method = strtolower($param['method']);
     Yii::info('makeRequest(' . $param['method'] . ', ' . $param['url'] . ')' . "\ndata = " . print_r($param['data'], true) . "\nheaders = " . print_r($param['headers'], true));
     try {
         $aDop = [];
         if (count($param['data']) > 0) {
             $sName = 'form_params';
             if ($method != 'post') {
                 $sName = 'query';
             }
             $aDop[$sName] = $param['data'];
         }
         if (count($param['headers']) > 0) {
             $aDop['headers'] = $param['headers'];
         }
         //            Yii::info('makeRequest() aDop = ' . print_r($aDop, true));
         //            $res = $client->request(
         //                $param['method'],
         //                $param['url'],
         //                $aDop
         //            );
         $parsed_url = parse_url($param['url']);
         $parsed_query = [];
         if (isset($parsed_url['query'])) {
             parse_str($parsed_url['query'], $parsed_query);
         }
         if ($method != 'post') {
             $parsed_query = array_merge($parsed_query, isset($aDop['query']) ? $aDop['query'] : []);
             if (isset($aDop['query'])) {
                 unset($aDop['query']);
             }
         }
         $sQuery = http_build_query($parsed_query);
         $url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $parsed_url['path'] . ($sQuery != '' ? '?' . $sQuery : '');
         //            Yii::info('makeRequest() url = ' . print_r($url, true));
         //            Yii::info($method.': '
         //                . $url
         //                . "\n"
         //                . (isset($aDop['headers']) ? (print_r($aDop['headers'], true) . "\n") : '')
         //                . (isset($aDop['form_params']) ? print_r($aDop['form_params'], true) : '')
         //            );
         Request::jsonOpts(true);
         $response = Request::$method($url, isset($aDop['headers']) ? $aDop['headers'] : [], isset($aDop['form_params']) ? $aDop['form_params'] : []);
         $aData = ['response' => $response, 'statuscode' => $response->code];
         if ($response->code >= 500) {
             //                Yii::error('Error makeRequest(): RequestException 500');
             $aData = ['response' => null, 'statuscode' => 500];
         } else {
             if ($response->code >= 400) {
                 //                Yii::error('Error makeRequest(): ClientException ' . print_r($response->body));
                 $aData = ['response' => $response, 'statuscode' => $response->code];
             }
         }
     } catch (\Exception $e) {
         Yii::error('Error makeRequest(): Exception ' . $e->getMessage() . ' ' . $e->getFile() . ' [' . $e->getLine() . '] ');
         $aData = ['response' => null, 'statuscode' => 500];
     }
     Yii::info('makeRequest(): return data = ' . print_r($aData, true));
     return $aData;
 }