Не уверен, если это должно идти здесь или на бит WordPress, опубликует его там, если это не по теме 🙂
Я пытаюсь вызвать API (PHP новичок), и я полностью застрял на том, как поступить ?? Это то, что я до сих пор …
class MyClass {
private static $instance = null;
protected function __construct() {
}
private function __clone() {}
private function __wakeup() {}
public static function getInstance() {
if (self::$instance == null) {
self::$instance = new self;
}
return self::$instance;
}
//Make the request
private function fetch_data($body) {
// Do we have this information in our transients already?
$transient = get_transient( 'fetch_data' );
// Yep! Just return it and we're done.
if( ! empty( $transient ) ) {
// The function will return here every time after the first time it is run, until the transient expires.
return $transient;
// Nope! We gotta make a call.
} else {
$api_url = "https://someapi.co.uk/api";
$request = wp_safe_remote_get( $api_url );
$body = wp_remote_retrieve_body(wp_safe_remote_get( $request ));
// Save the API response so we only call every hour
set_transient('fetch_data', '$body', 900);
if( is_wp_error( $request ) ) {
echo 'Something went wrong!';
return false; // Bail early
}
else
{
$my_data = json_decode( $body, true );
}
return $my_data;
}
}
}
MyClass::getInstance();
Любая помощь будет оценена 🙂
На другой странице я включаю файл, где находится класс
include(locate_template(('modules/my-api-bridge.php'), false, false));
и использовать это
$my_data = MyClass::getInstance();
Когда я вар дамп я получаю это обратно
object(MyClass)#3894 (0) {
}
Я пытаюсь использовать переменную, как это
echo $my_data['Itinary'] ['ItineraryDetails'] ['Name']
Я получаю это сообщение об ошибке
FATAL ERROR: UNCAUGHT ERROR: CANNOT USE OBJECT OF TYPE MyClass AS ARRAY
Я предполагал, что json_decode ($ body, true) преобразует объект JSON в массив PHP?
Поэтому я пытаюсь получить доступ к объекту, как это
echo $my_data->Itinary->ItineraryDetails->Name
Я получаю это сообщение об ошибке
Notice: Undefined property: MyClass::$Itinary in...
Notice: Trying to get property of non-object in...
Notice: Trying to get property of non-object in...
Что-то явно не так, и я не вижу что? Опять же, если это больше подходит для сайта WordPress, я размещу его там 🙂
Задача ещё не решена.
Других решений пока нет …