문제

여기 내 문제가 있습니다. 저는 세션 네임 스페이스에 액세스하려고합니다. 행위. ZF 예제는 새 네임 스페이스를 생성하여 작동하는 것처럼 보이지만 한 가지 동작 내에서만이를 보여 주지만 별도의 동작에서 기존 네임 스페이스에 어떻게 액세스합니까? 코드는 다음과 같습니다.

public function indexAction(){
    $defaultNamespace = new Zend_Session_Namespace('dingdangdoo');

    if (isset($defaultNamespace->numberOfPageRequests)) {
        // this will increment for each page load.
        $defaultNamespace->numberOfPageRequests++;
    } else {
        $defaultNamespace->numberOfPageRequests = 1; // first time
        }

    echo "Page requests this session: ",
    $defaultNamespace->numberOfPageRequests;
}

이것은 괜찮습니다. 그러나 다른 컨트롤러/액션 쌍을 만들고 싶다면 $ defaultNamespace-> numberofPageRequests에 어떻게 액세스합니까? Zend 세션 네임 스페이스의 새로운 인스턴스를 만들어야합니까?

도움이 되었습니까?

해결책

응용 프로그램 전반에 걸쳐 사용할 네임 스페이스의 단일 인스턴스를 만들거나 네임 스페이스 애드 HOC 인스턴스를 만들 것인지 여부에 관계없이 실제로 귀하에게 달려 있습니다.

zend_session_namespace의 인스턴스를 만들 때, 당신이 실제로하고있는 것은 하나의 '네임 스페이스'에 특정한 $ _session superglobal에 표준 인터페이스를 얻는 것입니다. Sueprglobal의 '네임 스페이스'는 $ _session 값 배열의 연관 키 일뿐입니다. 따라서 네임 스페이스 인스턴스를 사용하여 데이터를 수정하면 해당 네임 스페이스를 가리키는 Zend_session_namespace의 모든 인스턴스에서 수정을 사용할 수 있습니다.

나는 모든 것을 단순하게 유지하는 것을 선호하므로 zend_controller_action을 확장하고 predispatch 방법에서 인증, 인증 및 모든 세션 생성을 처리합니다. 그런 다음 My_Controller_Action의 속성으로 설정하여 네임 스페이스를 모든 작업에 사용할 수 있습니다.

다른 팁

내가 따르는 접근법은 네임 스페이스를 부트 스트랩으로 설정하여 응용 프로그램에서 사용할 수있는 것입니다. 원하는 컨트롤러/작업에서 액세스 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top