Laravel - получить ценность от объекта - PullRequest
0 голосов
/ 31 мая 2019

У меня есть объект PHP, возвращающийся из API. Следующее является dd ($ token):

OAuth2AccessToken {#559 ▼
  -accessTokenKey: "eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxn8F2X3MBCZYY1g7Do66LIK"
  -tokenType: "bearer"
  -refresh_token: "Q01156b975259zYyAN03aS8lf6YfRcYFK26w2xCvPu75zf0B9F"
  -accessTokenExpiresAt: 1559257067
  -refreshTokenExpiresAt: 1567975300
  -accessTokenValidationPeriod: 3600
  -refreshTokenValidationPeriod: 8751833
  -clientID: "Q06uUceuP2dpIJVmmqbWztlZ73dtb9Qd2shjbiKhkGt7lsimR"
  -clientSecret: "RD0fS7xiRNsmbwSBBXvgU3wsqtyNPy63DfoGq2"
  -realmID: "1385384240"
  -baseURL: "https://quickbooks.api.intuit.com/"
}

Как мне получить ключ "accessTokenKey" в переменную?

Я пробовал:

$token->accessTokenKey;

или

$token['accessTokenKey'];

Я получаю сообщение об ошибке "Невозможно получить доступ к частной собственности"

Ответы [ 2 ]

1 голос
/ 31 мая 2019

В данном случае это частная собственность.Это свойство не может быть вызвано извне из Model / Class, потому что его private может быть доступен только для Class.Вы должны использовать некоторую функцию, чтобы получить это.Может быть, вы можете получить с помощью $ token-> getAccessToken ().Я должен вам узнать больше о концепции ООП.Очень важно в Laravel.

public scope сделать эту переменную / функцию доступной из любого места, других классов и экземпляров объекта.

private scope, когда вы хотите, чтобы ваша переменная / функциябыть видимым только в своем собственном классе.

protected scope, когда вы хотите сделать свою переменную / функцию видимой во всех классах, которые расширяют текущий класс, включая родительский класс.

0 голосов
/ 31 мая 2019

Вы можете использовать \ReflectionClass класс

public function get_private_attribute_of($object, $property)
{
    $reflection = new \ReflectionClass($object);
    $property = $reflection->getProperty($property);
    $property->setAccessible(true);
    return $property->getValue($object);
}

использование:

get_private_attribute_of($token, 'accessTokenKey');

или можете использовать dd(get_class_methods($object)), чтобы указать имя всех доступных методов и выбрать нужный метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...