폴더


폴더는 여러개의 파일들을 묽어서 관리할 수 있는 파일시스템의 기능입니다. 프레임워크는 기능별로 구별하여 여러개의 폴더들을 가지고 있습니다.
각각의 폴더별 기능을 숙지하시면 프레임워크를 이해하는데 매우 유용합니다.

지니PHP는 폴더의 이름을 정할때, 다른 프레임워크와 혼동하지 않도록 유사한 이름으로 사용을 하고 있습니다.
다른 프레임워크를 사용해본 경험자라면 쉽게 이해하실 수 있습니다.


public 폴더


공토적으로 기존 클래식한 PHP개발자가 처음으로 프레임워크를 접할때 어려워 하는 거슨 시작포인트를 찾기 어려워 한다는 것입니다.
이는 프레임워크가 기존의 스크립트 파일이 URL과 매칭되는 형태로 동작을 하지 않기 때문입니다.

보통 프레임워크의 시작포인트는 public 폴더 입니다. 지니PHP는 이 폴더의 이름도 호환성을 위해서 동일한 이름으로 유지하고 있습니다. 우리는 서버를 실행하는 명령중에서 다음과 같이 -t 옵션을 이용하였습니다.

php -S localhost:8000 -t ./public

이는 root에서 시작하는 것이 아니라 ./public에서 시작하라는 의미 입니다. 이를 통하여 시작포인트가 public이라는 것을 유추해 볼 수 있습니다.
서버가 실행이 되어 클라이언트가 접속하게 되면 ./public 폴더 안에 있는 index.php파일이 시작하게 됩니다.

프레임워크가 /public에서 시작하는 이유는 사용자가 직접접으로 url경로를 통하여 내부 코드 파일을 접속을 하는 것을 방지 하기 위해서 입니다.


asset


public폴더에는 시작 코드인 index.php외에 몇개의 리소스들이 더 존재합니다. 그중에서 /public/asset은 자바스크립트 및 CSS와 같은 파일들이 존재합니다.
js와 css파일을 /public서브 디렉토리에 위치하는 이유는 이 경로가 시작 포인트 이기 때문입니다.

외부에서 접속을 할때 도메인/asset/~형태로 접속이 가능합니다.


images


asset 파일 외에도 이미지 파일도 public안에 위치를 합니다. 이유는 asset과 동일 합니다.


resource 폴더


지니PHP는 MVC패턴을 이용한 프레임워크 입니다.

코드와 뷰를 분리하는 것은 시스템의 아키텍처를 설계하는데 매우 유용합니다. 코드의 경우 변경이 적지만, 뷰의 경우에는 응용되는 사이트마다 다르게 표현이 되기 때문입니다.

지니PHP는 뷰의 화면들을 분리하기 위해서 별도의 전용 폴더를 만들어 구성하였습니다. 모든 뷰의 파일들은 /resource 폴더안에 위치를 합니다.
리소스에는 또한 여러 폴더들이 있습니다. pages, layout, menu 등의 폴더등이 있습니다.

이처럼 지니PHP가 컨덴츠를 별도의 폴더로 분리를 해둔 의미는 재사용성 입니다.


pages


/resource/pages 안에 html 또는 마크다운 파일을 생성하면, 자동으로 서비스 페이지를 랜더링 하여 화면에 출력을 해줍니다.
컨덴츠 리소스를 통하여 소스와 테마의 영향이 없이 순수하게 컨덴츠만을 생성하여 서비스를 만들어 낼 수 있는 것은 지니만의 장점입니다.


layoit


페이지 뷰와 결합되는 레이아웃 틀을 저장하는 폴더 입니다. 이 경로는 .env.php 설정 파일을 이용하여 수정할 수도 있습니다.


MVC+R

지니PHP는 MVC 형태로 뷰를 분리하는 것 외에 뷰를 리소스 형태로 완전 분리하여 컨덴츠를 관리 할 수 있습니다.
프레임워크의 버젼이 업그레이드가 되어도 영향을 받지 않고 유지가 되기 위함입니다. 또한 테마도 변경되어도 컨덴츠의 내용은 유지하기 위함입니다.
지니PHP는 이를 MVCR 패턴이라고 명치하여 말합니다.


theme 폴더


시중의 프레임워크들은 테마 기능을 지원하지 않습니다. 테마는 보통 CMS와 같은 시스템에서만 지원을 하는 기능입니다.
하지만, 지니PHP는 프레임워크 단계에서 테마기능을 지원합니다.

지니PHP는 테마를 구성을 통하여 사이트의 디자인을 분리할 수 있습니다.
테마 기능을 통하여 여러 디자이너들이 제공된 모양으로 사이트 전체를 한번에 수정을 할 수 있습니다.


테마구조


테마 폴더는 제작자/테마명 형태로 구조화 되어 있습니다. 먼저 제작자의 폴더를 생성하고, 서브폴더로 테마명의 폴더를 생성합니다.
테마를 생성할때는 테마 환경설정 파일도 같이 작성을 하셔야 합니다.


conf 폴더


지니PHP를 통하여 실제적인 웹사이트를 운영할때 적용되는 설정파일 입니다. 프레임워크의 환경설정 .env.php와는 다릅니다.
이 설정파일은 /app/conf/config.php 설정에 따라서 동적로딩 됩니다.

설정파일은 다양한 파일로 작성이 가능합니다.


app 폴더


지니PHP는 프레임워크입니다. 따라서, 자신만의 기능 코드를 작성하여 서비스를 개발할 수 있습니다.
각각의 기능은 컨트롤러 형태로 작성을 하면 됩니다. 컨트롤러에 대한 자세한 설명은 관련 부분을 참고해 주시길 바랍니다.


vendor 폴더


지니PHP는 다양한 라이브러리, 플러그인 확장을 컴포저 페키지로 제공을 합니다. 컴포저를 통하여 페키지를 설치하게 되면 vendor폴더 안에 설치가 되어 집니다.
패키지들의 관리는 루트 폴더에 있는 composer.json에 영향을 받게 됩니다.