2011-08-28 4 views
1

MVC에 대해 웹 어플리케이션을위한 확장 가능한 솔루션으로 말하는 여러 사람을 보았습니다. 그러나 MVC에 대해 몇 가지 질문이 있습니다. 여러 사이트에서 정적 객체를 사용하면 절차 적 프로그래밍이 필요하며 MVC와는 거리가 멀지 않습니다.OOP in PHP : MVC에서의 정적 사용에 대하여

이것이 사실인가요? 그렇다면 싱글 톤 패턴을 사용하여이 문제를 해결할 수 있을까요? 정적 객체를 사용하여

+0

정적 메서드를 사용하지 않으려는 이유를 설명해야합니다. http://kore-nordmann.de/blog/0103_static_considered_harmful.html - MVC와는 아무런 관련이 없습니다. 간단히 말해서 : 좋은 OOP는 낮은 결합력과 높은 응집력을 가지고 있습니다. 통계학은 정반대로 이어집니다. – Gordon

답변

2

Symfony2가이 문제를 아주 우아하게 해결했다고 생각합니다. 정적 클래스를 선언하는 대신 소위 "서비스"를 사용합니다. 모든 서비스와 해당 구성을 포함하는 중앙 관리자가 있습니다. 코드의 다른 부분에서 컨테이너에서 서비스를 얻을 수 있습니다. 컨테이너는 항상 필요한 모든 클래스의 동일한 인스턴스를 전달합니다 (구성에서 달리 지정하지 않는 한). 이는 싱글 톤 패턴이 거의 필요하지 않음을 의미합니다.

공식 문서는 훨씬 더 잘 설명되어 있으므로 Symfony's Service Container에 대한 링크를 참조하십시오.

다른 프레임 워크에서도 비슷한 방법을 사용하여 싱글 톤을 사용해야 할 필요가 없게됩니다.

+0

그건 내 프레임 워크에서 사용한 것입니다. Symfony가 이런 식으로 soemthing을 사용하는 것을 알지 못했습니다. 이제는 무엇을 사용해야할지 압니다. – D1Error

2

는 절차 적 프로그래밍에 이르게하고 이것은 말도 안돼까지 멀리 MVC

에서입니다. MVC는 응용 프로그램의 기능을 개별 레이어로 분리하는 방법입니다. MVC 디자인을 사용하면 객체가 정적인지 또는 싱글 톤을 사용하는지 여부와 아무런 관련이 없습니다. 사실, MVC 설계가 객체 지향적이어야한다고하는 것은 없습니다.

싱글 톤 사용에 관한 대부분의 의견은 단위 테스트 작성의 어려움을 다루고 있습니다. 자세한 내용은 https://stackoverflow.com/questions/3876951/why-is-it-hard-to-unit-test-singletons을 참조하십시오.