Pode callback métodos em session_set_save_handler do PHP ser privado?
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.
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')
);