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.

È stato utile?

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')
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top