Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Augusto

[Resolvido] Catchable fatal error... Maluco

Recommended Posts

Estou tentando, há um certo tempo aliás, melhorar minha classe de Sessões.

 

session_set_save_handler(() só vai trabalhar com objetos Handler, que é uma Interface:

 

interface Handler {

   /**
    * Opens Session Handler
    *
    * @param   Session  $session
    */
   public function open( Session $session );

   /**
    * Closes Session Handler
    *
    * @param   Session  $session
    */
   public function close( Session $session );

   /**
    * Reads Session Data of Session Handler
    *
    * @param   Session  $session
    */
   public function read( Session $session );

   /**
    * Writes Session Data in Session Handler
    *
    * @param   Session  $session
    */
   public function write( Session $session );

   /**
    * Destroys Session Data of Session Handler
    *
    * @param   Session  $session
    */
   public function destroy( Session $session );

   /**
    * Releases Session Handler (Garbage Collector)
    *
    * @param   Session  $session
    */
   public function release( Session $session );
}

 

Como eu não entendo muito sobre NoSQL e precisava testar esse Handler, desde sempre uso uma versão ligeiramente diferente desta, que o João Batista postou.

 

Com "ligeiramente" me refiro a bem pouca coisa mesmo, como nomes dos métodos no contexto da sessão.

 

O meu set_session_save_handler() está assim:

 

public function set() {

$handler =& $this -> handler;

$session =& $this -> session;

session_set_save_handler(

   function() use( $handler, $session ) {

       return $handler -> open( $session );
   },

   function() use( $handler, $session ) {

       return $handler -> close( $session );
   },

   function() use( $handler, $session ) {

       return $handler -> read( $session );
   },

   function() use( $handler, $session ) {

       return $handler -> write( $session );
   },

   function() use( $handler, $session ) {

       return $handler -> destroy( $session );
   },

   function() use( $handler, $session ) {

       return $handler -> release( $session );
   }
);

}

Nada de mais.

 

Daí que quando eu uso essa função, dentre todo o escopo do método:

 

if( ! is_null( $this -> handlers -> getHandler() ) ) {

   $this -> handlers -> set();
}

Uma vez que só haverá troca do handler se houver um diferente do nativo, eu recebo isso:

 

Catchable fatal error: Argument 1 passed to Lib\Session\Handlers\Mongo::write() must be an instance of Lib\Session, instance of Lib\Session given, called in C:\root\common\Lib\Session\Handlers.php on line 103 and defined in C:\root\common\Lib\Session\Handlers\Mongo.php on line 107

Olha o absurdo. Ele exige receber uma instância da classe de sessão, ele recebe uma instância da classe de sessão e acusa que recebeu outra coisa, mesmo mostrando que recebeu o que deveria.

 

Pior é que se ue mexo um pouquinho nódigo, trocando uma coisinha aqui ou ali e dou Ctrl + F5, o erro some. Mas eu faço isso 3 vezes e ele volta. o.O

 

Quê que eu faço?

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.