2017-01-20 7 views
0

심포니 3 개 best practices 프로젝트에 따르면,이 같아야Symfony 프로젝트 구조 - 왜 src/및 app /?

  • app/config/ 매장 어떤 환경에 대해 정의 된 모든 구성;
  • app/Resources/은 응용 프로그램의 모든 템플릿과 번역 파일을 저장합니다.
  • src/AppBundle/은 Symfony 고유 코드 (컨트롤러 및 경로), 도메인 코드 (예 : Doctrine 클래스) 및 모든 비즈니스 로직을 저장합니다.
  • var/ ...
  • tests/AppBundle/은 응용 프로그램의 자동 테스트 (예 : 단위 테스트)를 저장합니다.
  • vendor/ 이것은 Composer가 응용 프로그램의 종속성을 설치하는 디렉토리이며 절대 내용을 수정하면 안됩니다.
  • web/은 모든 전면 컨트롤러 파일과 스타일 시트, JavaScript 파일 및 이미지와 같은 모든 웹 자산을 저장합니다.

bin, var, vendorweb 디렉토리의 목적은 분명하다,하지만 난 왜 app, srctests을 분리, 궁금하네요.

제가 알고 있듯이 src에는 응용 프로그램을 만드는 번들이 포함되어 있습니다. 따라서 나는 그들이 app 디렉토리에있을 것으로 기대합니다. 또한 디렉토리는 src/AppBundle/Tests 번들에 포함되어야하므로 완전히 신비가 있습니다. 다른면에서 템플릿 (app/Resource/)이 AppBundle 외부에있는 이유는 무엇입니까?

응용 프로그램간에 번들 공유에 대한 메모가 있지만 Composer가 있으므로 번들은 vendor 디렉토리에 있으며 별도의 저장소가 있습니다. 그러나 추가 인프라를 필요로하지 않고 애플리케이션에 여러 번들을 포함하는 것이 유용 할 수 있다는 것을 알고 있지만 src은 완전히 잘못된 이름입니다.

그래서이 디렉토리 구조의 동기는 무엇입니까? 아니면 단지 역사적인 유산일까요?

좋은 이유가 없다면 tests/AppBundleapp/Resources과 같은 중복 디렉토리를 제거 할 것입니다. AppBundle에도 있습니다.

+0

몇 가지 흥미로운 읽기 : http://stackoverflow.com/questions/23993295/what-is-the-new-symfony-3-directory-structure http://stackoverflow.com/questions/7625960/understanding-architecture symfony2의 폴더 구조 - http://symfony.com/doc/current/quick_tour/the_architecture.html. 내가 이해하는 한,'app'는 설정을위한 것이고,'tests'는 phpunit이 설정 파일의 경로를 명시 적으로 지정할 필요없이 프로젝트 루트에서 실행되도록합니다. – Veve

+0

phpunit을 실행하려면 임의의 도구의 기본 구성 (테스트를 실행하기 위해 다른/다른 것을 사용하면 어떨까요?) 대신에'bin/command tests : run'과 같은 통일 된 진입 점이 필요합니다. –

+1

귀하의 질문에 어떻게 대답 할 수 있을지 모르겠다 ... 어쨌든 디렉토리 아키텍처에 대한 흥미로운 두 개의 글 : https://github.com/symfony/symfony/issues/12991 & https://github.com/ symfony/symfony-standard/issues/584 : config 및 템플릿 용'app', PHP 소스 코드 용'src'. – Veve

답변

1

의견에 제공된 링크 덕분에 app/Resourcestests/ 디렉토리는 역사적인 유산 일뿐입니다. Symfony의 모든 것이 번들이기 때문에이 디렉토리는 AppBundle에도 있으므로 중복 된 것을 삭제할 수 있습니다. app/은 AppBundle을 부트 스트랩하고 번들에 맞지 않는 것들을 포함하기위한 것입니다. 부트 스트랩 같은 자산

+0

또한 fos 사용자 번들에 대한 템플릿과 같은 재사용 가능한 번들 요소를 무시할 수 있습니다 – LPodolski