2009-05-05 2 views
1

오늘은 저를 설득하려고 노력했다. 나는 데이터베이스에 대한 호출을하기 때문에 거기에 존재하는 장소가없고 컨트롤러에 있어야한다고 주장했다. (우리는 실제로 MVC를 사용하지 않는다.) MVC와 일반적으로 템플릿에서 사용되는 논리적 인 분리를 이해하고 있습니까? 아니면 제가 빠진 것이 있습니까?데이터베이스 호출 작업 누군가에

+0

내보기를 지원하는 항목에 투표하는 것이 정말 공평합니까? 아마도 ... 나는 정말로 그것이 괜찮다고 생각한 사람들의 이야기를 듣고 싶었다 ... 오 잘. – SeanJA

답변

5

네가 맞아. 그는 틀렸다.

MVC 권한을 원할 경우 데이터베이스 호출은 어떤 형식이든 관계없이 컨트롤러에 있어야합니다.

분명히 사람들이 오줌을 내며 해야하고 그렇게 할 수는 있지만 올바른 방법은 아닙니다.

1

글쎄, "공식적인"규칙이나 그 어떤 것도 없지만 컨트롤러에 속한 것과 같다고 생각합니다. 디스플레이 변수를 제외하고 뷰 코드에서 아무 것도하지 않으며 if 또는 foreach 유형 루프보다 복잡한 것은 허용되지 않습니다. 확실히 데이터베이스에 액세스하는 함수를 호출하지 않습니다. 컨트롤러에 의해 모두로드되어야하며, 뷰는 표시 여부를 결정해야합니다.

0

실제로 컨텍스트와 범위에 따라 다릅니다.

$ obj가 컨트롤러 또는 모델 레이어입니까? 그것은 그것이 내 의견으로는 유효한지 아닌지에 대한 답을해야합니다.

다른 답변을 읽는 것에 대한 응답으로.

함수 이름 자체는 간단한 getter 메서드와 관련이 있습니다. 그것은 컨트롤러 계층을 통해 db를 호출 할 수 있습니다. 나는 말할 것이다. 특히 메모리에서 어떤 형태의 캐싱을 사용했다면 말이죠. (예를 들어 getter는 setter 일 때만 캐시 할 수 있습니다.)

+0

그것은 그의 주장이었다 ... '첫 번째 호출 후 캐시됩니다 ...'하지만 ... 변수에 넣고보기에도 전달하면 '캐싱'됨 – SeanJA

+0

온 디맨드 캐싱은 요청시 캐시 된 경우에만 작동합니다. 즉 첫 번째 호출에서. 다른 방법으로 의도대로 작동하지 않습니다. 이 함수의 어떤 부분이 어딘가에 전화를 걸어야합니다. 뷰 레이어가 db를 호출하지 않습니다. 그것은 객체에 대한 호출을하고 있습니다. 개체가 x를 호출하고 있습니다. – Louis

+0

또한 실제 db 호출이이 함수에있는 경우에는 무언가 잘못되었음을 의미합니다. 그 사이에 모델 레이어가 있어야합니다. 컨트롤러 레이어를 호출하면 괜찮습니다. – Louis