Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ehs171

Erro PHP Catchable fatal error.....

Recommended Posts

Pessoal é o seguinte, estou com o seguinte erro no php

Catchable fatal error: Object of class stdClass could not be converted to string in

 

Isso acontece toda hora que eu vou manipular uma informacao que está em uma seção, por exemplo quando vou dar um echo:

echo ($_SESSION['usuario']);

 

ou quando vou finalizar a sessao

session_unregister($_SESSION['usuario']);

 

será que alguem poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o codigo todo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todas as funções e construtores de linguagem que trabalham com strings, forçam o cast ("tipo") automaticamente para string. O mesmo vale para inteiros.

 

Esse seu índice no array superglobal $_SESSION possui um conjunto de informações estruturadas sob um objeto stdClass.

 

Essa "dummy class" é nativa e vazia. Não têm métodos enumeráveis e nem propriedades. Você pode criar suas propriedades, sempre públicas, em tempo de execução:

 

$o = new stdClass;

$o -> nome = 'Bruno Augusto'; // Crie a propriedade nome e dei à ela o meu nome

O problema é que justamente por não ter métodos, não possui o método __toString(), que permite retornar uma string quando a classe é usada como string, como o seu echo, por exemplo.

 

Se você quer apenas depurar esse valor, basta usar var_dump() ou print_r().

 

Se não for apenas depuração e quiser MESMO retornar uma informação em forma de string e ter a mesma funcionalidade da stdClass, estenda outra classe a partir dela e implemente o método citado:

 

<?php

class Object extends stdClass {

   public function __toString() {
       return basename( get_class( $this ) );
   }
}

Neste exemplo eu retorno o nome da classe que estender essa Object.

 

Seja lá qual for o nome da classe ele será retornado. Se estiver usando namespaces, onde os nomes das classes Podem/Ser/Bem/Maiores, o basename() faria retornar só a última parte, no exemplo, o "Maiores".

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.