Question

J'écris un gestionnaire de session personnalisé en PHP et j'essaie de rendre privées les méthodes définies dans 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')
);

Par exemple, je peux définir la fonction open de manière à ce qu'elle soit privée sans erreur, mais lorsque je mets la méthode d'écriture à part, elle aboie.

  

Erreur fatale: appel à une méthode privée   Session :: write () from context '' in   Inconnu sur la ligne 0

Je me demandais s'il s'agissait d'un bug ou s'il y avait un moyen de le contourner. À moins que je puisse certainement le rendre public, mais je préférerais que non. Il y avait un message de l'année dernière sur php.net qui éludait une chose semblable, mais je voulais juste savoir si quelqu'un avait des idées. Est-ce que c'est vraiment important? J'utilise PHP 5.2.0 sur ma boîte de développement, mais je pourrais certainement effectuer une mise à niveau.

Était-ce utile?

La solution

Ils doivent être publics. Votre classe est instanciée et appelée exactement comme vous le feriez dans votre propre code.

Donc, à moins que vous ne sachiez comment appeler publiquement une méthode privée sur N'IMPORTE QUELLE classe, alors non = P

Autres conseils

Passez un objet instancié en tant que premier paramètre de votre tableau de rappel.

$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')
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top