2012-04-01 3 views
0

MVC 모듈러 구조로 작업하고 있습니다. 젠드 (Zend)를 사용할 수없는 것과 같습니다. 디렉토리 구조는 다음과 같습니다.모듈러 폴더 구조의 사용?

/www 
    /Config 
    /Modules 
    /default 
     /controllers 
     indexController.php 
     loginController.php 
     /models 
     /views 
    blog 
     /controllers 
     indexController.php 
     /models 
     /views 
... 

이 구조에 대한 몇 가지 질문이 있습니다. "default"폴더에 loginController가 있습니다. 분명히 사용자는 해당 페이지로 이동하여 로그인합니다.

로그인 한 사용자는 블로그에 someting을 게시 할 수 있습니다. 그러나 이것이 나의 문제가있는 곳입니다. 다른 모듈이 사용자 데이터와 같은 데이터를 어떻게 공유 할 수 있습니까?

이 시나리오에서 "기본"모듈에도 "userModel"이 있습니다. 그러나 블로그에는 '최신 사용자'목록도 표시됩니다. 그래서 어떻게 든 "기본"모듈 안에있는 userModel에 대한 액세스가 필요합니다.

그리고 특정 모듈이 다른 모듈의 데이터를 필요로하는 경우를 생각해 볼 수 있습니다.

그러나 이것은 '모듈'이 거의 항상 다른 모듈에 종속되어 있음을 의미합니다. 그래서 나는이 구조에서 어떤 용도도 보지 못합니다. 아니면 내가 여기서 뭔가 잘못하고있는거야 .. ??

+0

다른 모듈의 모델에 액세스 할 수 없다는 생각이 들었습니까? Genereal에서는 방문자에 대해 하나의 사용자 테이블과 세션 만 갖게되며 모든 모듈에서 이러한 개체에 액세스 할 수 있어야합니다. – Basti

+0

@Basti 글쎄, 나는 '모듈'이 독립형이어야한다고 생각했다. 따라서 동일한 프레임 워크에서 작업하고 있다고 가정 해 봅시다. 응용 프로그램에서 '모듈'을 사용하면 문제가 없습니다. 그러나 한 모듈이 다른 모델 (데이터에 대한 특정 모델 쿼리와 같은)에 의존하면이 구조의 용도는 무엇입니까 ?? 나는 위에서 설명한 것처럼 "컨트롤러", "모델"및 "뷰"폴더 구조를 모두 분리하는 대신 사용할 수 있습니다. – w00

+0

모듈 간의 종속성은 문제가되지 않습니다. – Basti

답변

1

나는 정확히 모듈에 넣은 것을 다시 생각해 보겠다.

모델 레이어의 구조는 다른 모듈간에 공유되어야합니다. (이름 지정 규칙 : 모델, 모델, 모델, 모듈, 모듈 모델 .. 혼동). 모듈은 상호 작용과 관련된 부분을 패키지화합니다.

"article"을 나타내는 도메인 비즈니스 객체로 작업 할 때 로직이 모듈마다 마술처럼 바뀌지는 않습니다. 대신 각 사용자가 할 수있는 것에는 제한이 있습니다. 사용자가 일부 명령을 수행 할 권한이 있는지 여부에 따라.

SO topic을 읽는 것이 좋습니다. 컨트롤러 수준에서 권한 부여에 더 중점을 두면서 도메인 개체에도 동일한 아이디어를 적용 할 수 있습니다.

또한, Fowler의 기사 GUI Architectures을주의 깊게 읽어야합니다.

0

'모듈'방식은 여기에 맞지 않는 것 같습니다. MVC에는 모델 뷰와 컨트롤러라는 세 개의 엔티티 만 있습니다. 당신이 언급 한 바와 같이

컨트롤러 예를 들어, 어떤 모델을로드 할 수 post_controller는 포스트 및 모델 그래서 그런 식으로하자 사용자 모두를 필요로한다. 모델은 데이터를 나타 내기 때문에 같은 일을하는 두 개의 사용자 모델을 갖는 것은 잘못되었습니다.

그래서 모듈 방식을 없애 버릴 것입니다. 왜냐하면 안티 패턴이기 때문에 모든 애플리케이션을 통해 클래스 및/또는 코드를 반복 할 때주의해야합니다.