2012-02-28 2 views
3

지금까지 수행 한 학교 웹 프로젝트에서 3 계층 접근 방식으로 애플리케이션을 빌드했습니다. 데이터 계층, 응용 프로그램 및 표현 계층. 파이썬과 자바에서이 아키텍처를 사용했으며 PHP에서도이 아키텍처를 사용하고 싶습니다. 저는 레이어 간의 통신에 상당히 엄격했습니다. 이러한 것들이 과제의 요구 사항이었고, 제가 한 번 mySQL에서 Mongo db로 전환하려고 시도했을 때 꽤 쉽다는 것을 알았습니다. 데이터 액세스 개체의 함수 내에서 코드를 변경해야했습니다.Symfony PHP를 사용하여 3 계층 아키텍처 구현

이전에 말했듯이 더 큰 응용 프로그램을 PHP에서 작성하고 MVC 프레임 워크 인 Symfony2 Framework를 다운로드하여 설치했습니다. 제 의도는 MySQL 초기 응용 프로그램을 테스트 한 다음 Redis로 전환하고 테스트하는 것입니다.

그래서 내 질문은 : 3 계층 아키텍처 응용 프로그램을 작성하기 위해 프레임 워크의 기능과 모든 "장점"을 사용할 수 있으며 어떻게 레이어를 분리 할 수 ​​있습니까?

답변

3

Symfony2는 MVC 프레임 워크 그 자체가 아니며, 서로 잘 어울리는 느슨하게 결합 된 구성 요소 일뿐입니다. 리드 개발자가 이에 대해 blog post이 있습니다.

번들이 얼마나 세밀한 지 선택할 수 있습니다. 예를 들어 순수 도메인 객체, 비즈니스 로직 및 리포지토리 용 인터페이스, 원하는 DAO로 번들을 만들 수 있습니다. 선택적으로 원하는 ORM의 매핑 구성을 제공 할 수 있습니다. 이제 doctrine으로 작업하는 번들과 같은 데이터 액세스 전략을위한 번들을 만들 수 있고 redis와 함께 다른 저장소 인터페이스를 구현할 수 있습니다.

세분화 된 번들 구조에 열광 할 수 있지만 간단한 응용 프로그램의 경우이 모든 것을 /src 아래에 넣거나 여기에 구현 된 모든 데이터 액세스 전략을 사용하여 번들을 만들고 응용 프로그램에서 하나를 선택하여 번들 구성.

다른 번들의 방법을 연구하면 모범 사례를 익히는 데 도움이됩니다. FOSCommentBundle 또는 FOSUserBundle을 시작하는 것이 좋습니다.

+0

감사합니다. 몇 가지 사항을 이해하는 데 도움이되었습니다. 이제 저는 sumfony2로 뛰어 들어야합니다. –

1

확실히. 트릭은 서비스에서 데이터 계층 (일명 비즈니스 개체)을 마무리하는 것입니다. 응용 프로그램 (컨트롤러라고도 함)은 사용자 입력을 기반으로 이러한 서비스와 상호 작용하고 결과를 프레젠테이션 계층에 전달합니다.

서비스를 신중하게 작성하면 컨트롤러 나 프리젠 테이션에 영향을주지 않고 데이터베이스 레이어를 바꿀 수 있습니다.