Я пишу собственный обработчик сеанса на PHP и пытаюсь сделать методы, определенные в 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')
);
Например, я могу установить частную функцию open без каких-либо ошибок, но когда я делаю метод записи закрытым, она лает на меня.
Fatal error: Call to private method Session::write() from context '' in Unknown on line 0
Мне просто было интересно, было ли это ошибкой или есть способ обойти это. За исключением этого, я, конечно, могу просто обнародовать это, но я бы не стал. В прошлом году на php.net было сообщение, ускользавшее от подобной вещи, но просто хочу знать, есть ли у кого-нибудь идеи. Это действительно важно? Я использую PHP 5.2.0 на своем компьютере для разработки, но, безусловно, могу обновить его.






Они должны быть публичными. Ваш класс создается и вызывается точно так же, как и в вашем собственном коде.
Итак, если вы не можете выяснить, как публично вызвать частный метод в ЛЮБОМ классе, тогда no = P
Передайте созданный объект в качестве первого параметра вашего массива обратного вызова.
$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')
);
Тогда вы просто используете методы объекта вместо методов класса. Но они тоже должны быть публичными.