Frage

Ich bin ein benutzerdefinierte Session-Handler in PHP zu schreiben und zu versuchen, die Methoden in session_set_save_handler privat definiert zu machen.

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

Zum Beispiel kann ich die open-Funktion gesetzt ohne Fehler privat zu sein, aber wenn ich die Schreibmethode privat bellt es mich an.

  

Fatal error: Call to private Methode   Session :: write () aus dem Kontext '' in   Unknown on line 0

ich frage mich nur, ob dies ein Fehler war oder es gibt einen Weg, um dieses. Abgesehen davon kann ich sicher es nur öffentlich machen, aber ich möchte lieber nicht. Es gab einen Beitrag aus dem letzten Jahr auf php.net zu einer ähnlichen Sache entziehen, sondern möchte nur wissen, ob jemand irgendwelche Ideen hatte. Ist es wirklich wichtig? Ich bin mit PHP 5.2.0 auf meinem Entwicklungsfeld, konnte aber sicherlich aktualisieren.

War es hilfreich?

Lösung

Sie haben öffentlich zu sein. Ihre Klasse instanziiert und rief in genau der Art und Weise Sie in Ihrem eigenen Code würde.

Also, es sei denn, Sie können herausfinden, wie öffentlich für jede Klasse ein eigenes Verfahren nennen, dann no = P

Andere Tipps

Übergeben Sie eine instanzierte Objekt als ersten Parameter Ihrer Callback-Array.

$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')
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top