¿Los métodos de devolución de llamada en el session_set_save_handler de PHP pueden ser privados?

StackOverflow https://stackoverflow.com/questions/248478

Pregunta

Estoy escribiendo un controlador de sesión personalizado en PHP y tratando de hacer que los métodos definidos en session_set_save_handler sean privados.

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

Por ejemplo, puedo configurar la función de apertura para que sea privada sin ningún error, pero cuando hago que el método de escritura sea privado, me ladra.

  

Error fatal: llamada a método privado   Session :: write () from context '' in   Desconocido en la línea 0

Me preguntaba si esto era un error o si hay una forma de evitarlo. Salvo que ciertamente puedo hacerlo público, pero prefiero no hacerlo. Hubo una publicación del año pasado en php.net eludiendo algo similar, pero solo quiero saber si alguien tuvo alguna idea. ¿Realmente importa? Estoy usando PHP 5.2.0 en mi cuadro de desarrollo, pero sin duda podría actualizar.

¿Fue útil?

Solución

Tienen que ser públicos. Tu clase está instanciada y llamada exactamente de la manera que lo harías en tu propio código.

Entonces, a menos que pueda descubrir cómo llamar públicamente a un método privado en CUALQUIER clase, entonces no = P

Otros consejos

Pase un objeto instanciado como el primer parámetro de su matriz de devolución de llamada.

$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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top