__PHP_Incomplete_Class e Zend Framework

Fazendo um projeto base de autenticação de usuário no PHP com Zend Framework me deparei com a seguinte questão:

Ao inserir um objeto em uma variável instanciada de Zend_Session_Namespace (ou seja, na session) e depois ao tentar acessar novamente a variável apresentava que o objeto é do Tipo __PHP_Incomplete_Class.

Fiz algumas pesquisas pela interner e encontrei um bom texto sobre o assunto no blog Tupi.

Resumindo: Ao tentar trazer o objeto da sessão pelo Zend é utilizado a função unserialize. Usando esta função e não tendo a classe incluida no seu escopo o PHP não reconhece o tipo do objeto e classifica assim.

Para resolver o problema o Bruno Viana menciona 2 características:

Uma solução para isso é utilizar o magic method __wakeup para requerir as classes necessárias para esse objeto desserializar sem problemas. Ou então certifique-se de que sua sessão está sendo iniciada depois dos require’s e include’s.

Particularmente eu fiz diferente. Utilizei uma função da própria classe que faz o mapeamento do objeto transformando em um array ( ->toArray() ).

Deixe uma resposta

Seu endereço de email não será publicado. Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>