Я вызываю API, который дает вложенную смесь JSON, STDClass и Arrays.Одной из моих главных проблем была попытка извлечь из нее конкретные данные, которые были решены.Дело в том, что код работал, пока я не попытался использовать лезвие Laravel.После создания макета с именем master.layout.php и создания раздела под названием «content», который принимает коды внутри тега, он перестал работать и продолжал выдавать ошибку «Максимальный уровень вложенности функций« 256 »достигнут».
В Stackoverflow было несколько решений, которые я пробовал, и некоторые приемы, позволяющие обойти его, изменив конфигурацию xdebug в файле PHP.ini.но, к сожалению, никто из них не работал для меня.Один из членов сказал: «Лучше взглянуть на структуру вашего кода, чем пытаться обойти его, что я и сделал. Из того, что я понял, я чувствую, что функция json_decode () продолжает рекурсивно работать, поскольку она рекурсивная функция. Я пыталсяустановить глубину, но это не сработало. Я был бы рад, если бы кто-нибудь рассказал мне о способах решения этой проблемы. Вот код:
price.blade.php:
@extends('layouts.master')
@section('content')
@php
$btc = new \App\Http\Controllers\CoinsController();
$parameters = [
'start' => '1',
'limit' => '1',
];
$query = http_build_query($parameters);
$result = $btc->apiGet('https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'."?".$query);
$price = json_decode($result['response'])->data[0]->quote->USD->price;
@endphp
<h1>Bitcoin Price Live</h1>
<h2>{{"Current Price of Bitcoin: ". $price}}</h2>
@stop
CoinsController.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CoinsController extends Controller
{
function apiGet($url)
{
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_TIMEOUT => 30000,
CURLOPT_POST => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
// Set Here Your Requesred Headers
'Content-Type: application/json',
'Accept-Encoding: deflate, gzip',
'X-CMC_PRO_API_KEY: xxxxxxxxxxxxxxxxxxx',
),
)
);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
json_decode($response);
}
return view('index.price', compact('response'));
}
}