2014-01-27 6 views
5

종종 app\ 폴더 내의 리소스에 폴더를 배치 할 위치를 결정할 때 문제가있는 것으로 나타납니다.Laravel 폴더 구조

\app 
    \models 
    \controllers 
    \views 
    \YourAppNameHere 
     \Services 
     \validators 
     \... 

: 나는 다음과 같은 어떤 사람들은 어떻게 볼 수 있지만, 나는 그런 model observersvalidatorsform macrosrepositories 같은 일을 배치해야

은 .... 현재 나는

\app 
    \models 
    \controllers 
    \repositories 
    \observers 
    \interfaces 
    \validators 
    \views 

를 다음을 수행 그 \ Acme 폴더 뒤에있는 이유는 실제 응용 프로그램과 같은 때 이해가 안돼?

+0

둘 다 좋습니다. 가장 적합한 것을 선택하십시오. 정말로, 이것에 대해 걱정하지 마시고, 하나에 충실하십시오. – Andreyco

+3

누군가가 Laracast를 지켜 봅니다. – mikedugan

답변

8

가장 좋은 방법은 아래

은 아이디어에 대한 내 composer.json 및 global.php의 관련 섹션의 예입니다 Laravel 폴더 구조를 마스터하려면 응용 프로그램 디렉토리를 으로 처리해야합니다. 프레임 워크의 프런트 엔드. git repository을 살펴보면 그것들이 분리되어 있음을 알 수 있습니다. 코어 라이브러리를 복제하고 laravel 응용 프로그램 만 복제 할 수 있습니다. 하위 폴더가있는 응용 프로그램은 프레임 워크를 사용할 수있는 한 가지 방법을 나타냅니다. Ofcourse는 관련 모범 사례로 설계되었습니다. 또한 코어 프레임 워크 디렉토리를 테스트하십시오. Laravel 개발자는 라이브러리를 "headless"로 취급합니다 (응용 프로그램없이). 나에게 Laravel을 파악하는 데 필요한 모든 것이 었습니다.

기존 구조를 자유롭게 수정할 수는 있지만 일부 변경 사항은 작곡가 dump-autoload - 주로 네임 스페이스 때문일 수 있습니다.

+0

고마워요, 정말보기 좋은 곳입니다. 내 핵심 관심사는 내가 종종 웹 아래에 자신의 폴더를 구조화하는 사람들을 볼 것 같아요. /lib/validators .../lib/macros ... 그리고 "응용 프로그램 도메인"인 모든 것을보아야합니다. '/ app'와 적절한 네임 스페이스가 만들어집니다. 나는 단지 최고, 가장 명확하고 가장 "웅변적인"구조를 찾고 있습니다. – AndrewMcLagan

1

간단히 말하자면, 당신과 당신 팀은 모든 프로젝트에서 일관성을 유지하는 것이 좋다는 가독성을 위해 최선을 다하는 방법입니다.

+2

어떤 구조 에든 열려있는 것이 주된 문제입니다 ....그게 정말 도움이되지 않습니다 – AndrewMcLagan

7

전체적으로 Laravel은 어떤 방식 으로든 가장 잘 작동합니다. 어떤 사람들은 기본 아키텍처를 선호하는 반면 다른 도메인 기반 아키텍처는 선호합니다. 내 경로와 함께 bin/ 몇 가지 일반적인 헬퍼가 있지만,

/app 
    /database 
    /controllers 
    /bin 
    /views 
    /config 
    /storage 

내가 서비스 제공자에 내 사용자 정의 기능을 많이 유지 :

나의 현재 프로젝트는 모두 같은 것을 사용하여,이 이탈 및 필터.

원하는대로 할 수 있습니다. composer.jsonapp/start/global.php을 적절하게 업데이트하여 적절한 클래스가 자동로드되도록하십시오. 그리고 네임 스페이스가 모두 올바르게 지정되었는지 확인하십시오!

composer.json :

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/database/models", 
     "app/database/migrations", 
     "app/database/seeds" 
    ] 
}, 

app/start/global.php :

ClassLoader::addDirectories(array(

app_path().'/commands', 
app_path().'/controllers', 
app_path().'/bin', 
    app_path().'/database/models', 
    app_path().'/database/seeds', 

)); 
require app_path().'/bin/filters.php'; 
require app_path().'/bin/helpers.php'; 
require app_path().'/bin/events.php';