__PHP_Incomplete_Class e Zend Framework
11 de setembro de 2009 Deixe um comentário
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() ).



