Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alguém pode ajudar com o seguinte erro que apareceu do nada ? sempre funcionou legal a listagem dos tweets agora depois de 1 ano basicamente parou de funcionar
Fatal error: Cannot use object of type stdClass as array in
line:38
segue o código
function getProfile() {
$profile = array();
if(!empty($this->tweets)) {
$profile = $this->tweets[0]->user;//linha 38
}
return $profile;
}Segue o debug
Twitter Object ( [user:private] => milenasantosarq [tweets:private] => stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [message] => The Twitter REST API v1 is no longer active. Please migrate to API v1.1. [https://dev.twitter.com/docs/api/1.1/overview.](https://dev.twitter.com/docs/api/1.1/overview.)
=> 68 ) ) ) )
Twit twit... ops! Something went wrong, try again later!
31 Dec 1969>
The Twitter REST API v1 is no longer active.Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview
vc tem q atualizar a api.
Ocorre que a sintaxe de colchetes até certo tempo atrás era uma exclusividade dos arrays.
Porém, pouco a pouco (relativamente falando) os Objetos foram sendo aprimorados. Primeiro eles puderam ser iterados tal qual um array normal. A consequência natural disso seria os objetos que representam um array também poderem adotar a sintaxe de colchetes.
Essa habilidade se dá por fazer um objeto implementar a interface ArrayAccess, a qual, ironicamente, parece não ter sido implementada aos objetos stdClass. E por isso o Fatal Error.
Agora quanto ao "sempre funcionou legal" veja a mensagem de erro que a API retorna:
The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview
Eu nunca usei a API do Twitter (na verdade nunca sequer usei o Twitter) mas, imagino eu que a versão 1 da API retornava outra coisa que você podia analisar como um array.
Outra possibilidade não coberta pelo fragmento acima é a API retornar um JSON e você estar aplicando json_decode() sobre o retorno.
json_decode() se não receber um segundo argumento como TRUE, produzirá um objeto stdClass, que não pode ser acessado como array e nos faz voltar ao início desse post.
Resumindo...
Primeiro de tudo, adeque sua aplicação para que esta use a versão 1.1 da API.
Segundo, veja o que a nova versão da API te retorna e, possivelmente, faça as modificações necessárias para que funcione. Caso nada muito importante mude e a API retorne um JSON, apenas lembre-se de passar o segundo argumento para a função decodificar em um array válido.
Tudo bem percebi o problema da API estou trabalhando nisso, deixei marcado como resolvido pois vai levar um pouco de tempo. Muito obrigado
da um print_r em $this