문제

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')
);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top