Pergunta

Eu estou escrevendo um manipulador de sessão personalizado em PHP e tentando fazer os métodos definidos no session_set_save_handler privado.

session_set_save_handler(
    array('Session','open'),
    array('Session','close'),
    array('Session','read'),
    array('Session','write'),
    array('Session','destroy'),
    array('Session','gc')
);

Por exemplo eu posso definir a função de abertura para ser privada sem erros, mas quando eu faço o método de gravação privada ele late para mim.

Erro fatal: Chamada para o método privado Sessão :: write () do contexto '' em Unknown on line 0

Eu só estava me perguntando se isso era um bug ou há uma maneira de contornar isso. Exceto que eu posso certamente apenas torná-lo público, mas eu prefiro não. Houve um post do ano passado em php.net Eluding para uma coisa semelhante, mas só quero saber se alguém tinha alguma idéia. Será que realmente importa? Eu estou usando PHP 5.2.0 na minha caixa de desenvolvimento, mas certamente poderia atualizar.

Foi útil?

Solução

Eles têm que ser público. Sua classe é instanciado e chamado exatamente da maneira que você faria em seu próprio código.

Assim, a menos que você pode descobrir como chamar publicamente um método privado em qualquer classe, em seguida, no = P

Outras dicas

Passe um objeto instanciado como o primeiro parâmetro de sua matriz de retorno de chamada.

$session = new Session();
session_set_save_handler(
    array($session,'open'),
    array($session,'close'),
    array($session,'read'),
    array($session,'write'),
    array($session,'destroy'),
    array($session,'gc')
);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top