영리한 PHP 응용 프로그램 구성 구조?


10

사용 가능한 무수한 오픈 소스 프로젝트에 들어가는 백만 및 하나의 파일 시스템 구조가 있습니다. 모듈, 언어 파일, 도메인, 타사 라이브러리, 마이그레이션, 국제화, 백업 및 시스템의 다른 부분에 대한 syslink와 같은 것들로 인해 프로젝트의 파일 시스템을 구성하는 많은 접근 방식이 생겨났습니다.

PHP 개발자로서 프로젝트에서 어떤 유형의 표준화가 등장하고 있는지 궁금합니다. PSR-0 을 사용하면 파일의 이름을 지정하고로드하는 표준이 생겼습니다. 그러나 시스템을 구성하는 나머지 구성 요소 나 제대로 처리 할 수있는 방법에 대해서는 아는 것이 없습니다.

우리는 MVC 이상의 것을 다루고 있습니다. 따라서 이러한 모든 것을 올바르게 처리하는 대규모 프로젝트의 예는 무엇입니까?


3
동료 PHP 개발자로서, PHP 컴포넌트로부터 온전함을 기대하지는 않습니다.
CamelBlues

2
@CamelBlues 순수한 가능성에 근거하여, 일부 PHP 개발자는 결국 엉망이되고 올바른 일을해야합니다.
Xeoncross

표준화까지는 보지 못했습니다. 지난 몇 년간 프론트 엔드 폴더 (js, css)를위한 폴더를 갖게되었고 포함 또는 라이브러리와 템플릿 또는 테마를 갖게되었습니다. 최근 MVC 프레임 워크의 인기가 높아짐에 따라 모든 것이 확실하지 않습니다. 지금은 표준을 사용하는 것에 대해 걱정하지 말고 특정 응용 프로그램의 위치를 ​​명확하게 유지하십시오.
Jason

답변:


3

"종속적"이기 때문에 프로젝트 배치 방법을 표준화하는 것은 실제로 불가능합니다.

표준 구조를 도입했지만 일부 구조가 개발중인 요구 사항과 관련이 없으면 필요없는 추가 노이즈가 발생할 수 있습니다. 마찬가지로 표준이 광범위한 프로젝트에서 작동해야하는 경우 너무 많은 이질적인 시나리오를 통합해야합니다.

개발자로서 우리의 임무는 패턴과 모범 사례를 찾아서 과제에 적용하는 것입니다. 우리는 우리의 경험과 전문 지식을 사용하여 작업중인 프로젝트에 적합한 파일 시스템 구조를 선택합니다.


+1 전체적으로 당신에게 동의합니다, 이것은 확실히 유효한 포인트입니다. 그러나 언어 이외의 항목 (백업 폴더, cron / build 스크립트, 정적 자산 등)을 제거하고 언어 자체에만 집중하면 동일한 주장을 할 수 있다고 생각하지 않습니다. 언어에는 이미 제한이 있습니다. 모든 클래스와 코드 블록을 배열하여 모든 프로젝트에 적합 하도록 배치하는 방법을 알아내는 것이 실제적이고 달성 가능한 목표입니다.
Xeoncross

0

표준화 노력이 많이 진행되지 않은 것 같고 솔직히 말하면 이점이 없습니다. 지켜야 할 규칙은 단 하나뿐입니다. 즉, docroot 아래에 속하지 않는 것은 없어야한다는 것입니다 (기본 보안 예방 조치).

그 외에는 프로젝트에 적합한 것이 있습니다.

MVC를 사용하는 경우 (프레임 워크 또는 애드혹을 통해) / models, / views 및 / controllers가있는 기본 구조가 적합합니다. 그러나 그렇지 않은 경우에도 일반적으로 데이터 엔터티에 매핑되는 클래스가있는 일종의 데이터 액세스 계층이 있습니다. 그것들을위한 디렉토리를 갖는 것이 합리적입니다. 일반적으로 많은 비즈니스 로직 클래스와 유틸리티 함수가 있으므로이를위한 또 다른 디렉토리가 있습니다. 템플릿 시스템을 사용하는 경우 템플릿은 다른 디렉토리로 이동합니다. 그런 다음 모든 타사 라이브러리를 저장하는 '라이브러리'디렉토리가 필요할 것입니다. (이 시점에 도달하면 어쨌든 MVC를 수행하고 있습니다).

프로젝트가 실제로 크면 기능적인 서브 모듈로 나 into 수 있습니다. 하위 모듈이 상당히 독립적 인 경우, 공통 코드를위한 하나의 추가 디렉토리를 사용하여 하위 모듈을 최상위 레벨로 사용하는 것이 좋습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.