2008-10-29 6 views
3

J'écris un gestionnaire de session personnalisé en PHP et essaye de rendre privées les méthodes définies dans session_set_save_handler.Les méthodes de callback dans PHP session_set_save_handler peuvent-elles être privées?

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 configurer la fonction ouverte à être privée sans aucune erreur, mais quand je fais la méthode d'écriture, il aboie privé à moi. Je me demandais juste si c'était un bogue ou il y a un moyen de contourner ce problème. Sauf que je peux certainement le rendre public, mais je préfère ne pas le faire. Il y avait un post de l'année dernière sur php.net éludant à la même chose, mais je veux 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 mettre à jour.

Répondre

4

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 pouvez comprendre comment appeler publiquement une méthode privée sur toute catégorie, alors pas = P

+0

Gotcha. Logique. –

0

passer un objet instancié comme 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') 
); 
+0

Ensuite, vous utilisez simplement des méthodes d'objet au lieu de méthodes de classe. Mais ceux-ci doivent aussi être publics. – Gumbo

Questions connexes