PHP의 Session_SET_SAVE_HANDLER의 콜백 메소드가 비공개 일 수 있습니까?
문제
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')
);
예를 들어, 나는 오픈 기능을 오류없이 비공개로 설정할 수 있지만, 쓰기 방법을 비공개로 만들 때 나에게 짖는다.
치명적인 오류 : 개인 메소드로 호출 :: 컨텍스트에서 write () ''에서 알 수없는 줄 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')
);
제휴하지 않습니다 StackOverflow