2011-05-16 3 views
0

제 젠드 애플리케이션의 경우 모든 곳에서 사용할 수있는 몇 가지 기본 구성 데이터를 데이터베이스에서 읽어야합니다. 나는 그것들을 읽고 세션에 저장하여 모든 요청에 ​​대해 그렇게 할 필요가 없다. 내가 할 수있는 최선의 방법은 무엇입니까?젠드 (Zend) - 사이트 구성 데이터

또한 '모델'에서 데이터를 가져오고 싶습니다. 모델 내 세션을 읽을 때 매우 불안해합니다.

답변

0

정말 중요한 세션에 저장 하시겠습니까? 또한 데이터베이스에서 데이터를로드하여 지정된 시간 동안 존재하고 업데이트 된 파일/Zend-Config-Object에 저장할 수 있습니다.

또 다른 가능성은 Zend_Registry입니다. 그러나 각 요청마다 데이터를 가져와야합니다.

왜 데이터베이스에서 각 요청을 가져 오지 않으시겠습니까? 당신은 쉽게 당신을 위해 일을 얻을 컨트롤러 플러그인을 사용할 수 있습니다. 코드를 한 번 작성하면 그 코드로 무언가를 할 필요가 없습니다. 뷰에 대한 것들 - -

// This would be an example plugin-class... 
class My_Config_Loader extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch($request) 
    { 
     // Fetch data here... and save it into $data 

     Zend_Registry::set('config', $data); 
    } 
} 

// In your bootstrap... 
$front = Zend_Controller_Front::getInstance(); 
$front->registerPlugin(new My_Config_Loader()); 

// Anywhere in your application 
$config = Zend_Registry::get('config'); 
+0

@faileN ... 그것은 실 거예요 대부분 테마 등의 데이터 ..., 구글 API 키, 도메인 URL, 관리자 메일 ID가 중요하다 그래서 세션에 저장하는 가장 좋은 것입니다 ...하지만 때로는 '모델'레이어에서 메일이나 somethings을 보낼 필요가 있습니다. –

+0

세션에서 가져와 레지스트리에 저장하는 것이 어떻습니까? 내가 어디에서해야하지? 모든 요청에 ​​대해 나는 그것이 세션에서 데이터베이스를 읽고 세션과 레지스트리에 저장합니다. 세션에 있는지 확인합니다. 세션에 있으면 세션에서 가져 와서 저장합니다. 레지스트리에서 ... 해킹 소리처럼 들린다. ( –

+0

Zend_Registry (또는 일반적으로 레지스트리 패턴)가 다음과 같이 고안되었습니다. 응용 프로그램의 모든 곳에서 데이터에 액세스합니다. 컨트롤러의 데이터가 필요하면 모델 및보기에서 레지스트리에 저장하고 거기에서 검색하는 것이 가장 좋을 것이라고 생각합니다. 물론 세션에서 저장 한 다음 레지스트리의 세션 내용을 저장할 수는 있습니다. 데이터를 가져 오는 쿼리가 매우 느린 경우에만 수행하십시오. 그렇지 않은 경우 요청마다 데이터를 검색합니다. 이유 : 사용자가 귀하의 페이지를 주변을 돌아 다니면서 방문하는 경우 어떻게됩니까? –

관련 문제