I metodi di callback in session_set_save_handler di PHP possono essere privati?
Domanda
Sto scrivendo un gestore sessioni personalizzato in PHP e sto provando a rendere privati ??i metodi definiti in session_set_save_handler.
session_set_save_handler(
array('Session','open'),
array('Session','close'),
array('Session','read'),
array('Session','write'),
array('Session','destroy'),
array('Session','gc')
);
Ad esempio, posso impostare la funzione open in modo che sia privata senza errori, ma quando rendo privato il metodo write mi abbaia.
Errore irreversibile: chiamata al metodo privato Sessione :: write () dal contesto '' in Sconosciuto sulla linea 0
Mi stavo solo chiedendo se si trattava di un bug o c'è un modo per aggirare questo. Tranne il fatto che posso certamente renderlo pubblico, ma preferirei non farlo. C'è stato un post dell'anno scorso su php.net che sfuggiva a una cosa simile, ma voglio solo sapere se qualcuno ha qualche idea. Importa davvero? Sto usando PHP 5.2.0 sulla mia scatola di sviluppo, ma potrei certamente aggiornarlo.
Soluzione
Devono essere pubblici. La tua classe viene istanziata e chiamata esattamente come faresti nel tuo codice.
Quindi, a meno che tu non riesca a capire come chiamare pubblicamente un metodo privato su QUALSIASI classe, allora no = P
Altri suggerimenti
Passa un oggetto istanziato come primo parametro dell'array di callback.
$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')
);