리소스


리소스(resource)의 어원은 자원,재료라는 의미 입니다. 웹페이지를 생성하기 위한 실제 컨덴츠 내용물과 관련 파일들을 의미합니다.

분리


지니PHP는 별도의 모듈을 개발을 하지 않고도 프레임워크만 가지고도 웹사이트를 쉽게 제작할 수 있도록 되어 있습니다.

사실 일반적인 사용자들은 PHP코드에 대해서 잘 알지도 모르고, 작성을 할 수도 없습니다. 단순하게 내가 작성된 파일을 웹페이지로 만들어 주는 것에 관심이 많습니다. 또한, 코드와 페이지의 컨덴츠가 썩여 있으면 유지 관리하기에도 불편합니다.

이런점을 감안하여 지니PHP는 별도의 /resource 폴더를 분리하여 관리하고 있습니다.

리소스 패턴


리소스패턴은 지니PHP에서 명명한 이름입니다. 기존 MVC패턴에서 리소스만 분리하여 별도의 R을 만들어 MVCR 이라는 새로운 이름을 정하였습니다. 리소스 폴더만 별도로 관리를 하고, 기존의 코드들은 유지함으로써 향후 업그레이드를 좀더 편하게 유지하기 위한 아이디어 입니다.

리소스 폴더


생각하고 있는 서비스가 단순하게 회사 홈페이지, 블로그와 같이 컨덴츠 중심일 수 있습니다. 이련경우, 별도의 MVC에 행당하는 코드를 작성할 필요가 없습니다. 순수한 지니 PHP에 resource 폴더만 업로드 하여 서비스를 만들어 낼 수 있습니다.

기본위치


리소스 페이지는 페이지와 같이 연동이 됩니다. 기본설정은 .env.php에 설정되어 있는 /resource/pages입니다. 만일 기본 폴더를 수정하기를 원하시는 경우 .env.php의 값을 변경해 주시면 됩니다.

'path'=> [
        'app'=>"../app",
        'conf' => "/conf",
        'theme' => "/theme",
        'view' => "/resource/views",
        'pages' => "/resource/pages",
        'layout' => "/resource/layout",
        'route' => "/app/route"
    ]

커스텀위치


기본 리소스 뷰 폴더외에 커스텀 방식으로 리소스의 위치를 변경할 수 있습니다.

커스텀으로 리소스를 위치를 변경하는 방법은 site.ini에 새로운 설정값을 추가하는 것입니다.

# 뷰 리소스 경로
view_path = /resource/jiny

컨스텀 설정값이 추가 되면, 이를 우선적으로 처리하게 됩니다.

이는 뷰에서 리소스 페이지를 초기화 할때 분기 됩니다.

/**
 * 뷰의 리소스 경로를 확인합니다.
 */
public function getPath()
{
    if ($this->_path = conf("site.view_path")) {
        // site 설정의 값을 우선 처리합니다.
    } else {
        // 기본값는 환경변수 설정값 입니다.
        $this->_path = conf("ENV.path.pages");
    }

    // 경로를 운영체제에 맞게 수정합니다.
    $this->_path = ROOT.str_replace("/", DIRECTORY_SEPARATOR, $this->_path);
}

동적위치 변경


초기값을 통하여 리소스의 위치는 결정이 됩니다. 하지만, 뷰의 코드를 호출하여 동적으로 리소스의 시작위치를 변경할 수 있습니다. 이를 위한 추가 메소드를 지원합니다.

/**
 * 뷰의 리소스 경로를 설정합니다.
 */
public function setPath($path)
{
    // 경로를 운영체제에 맞게 수정합니다.
    $this->_path = ROOT.str_replace("/", DIRECTORY_SEPARATOR, $path);
}

깃허브


이렇게 분리되는 리소스는 깃, 깃허브와 같은 저장소를 같이 사용하면 유용합니다. 실제 코드와 컨덴츠를 별도로 관리하기 때문입니다. 이렇게 분리된 저장소는 후킹과 같은 기술을 이용하여 연동을 할 수도 있을 것입니다.

후킹은 별도로 직접 구현을 하셔야 합니다.

페이지 처리


지니PHP가 이렇게 간단히 리소스 파일 생성만으로도 사이트를 제작이 가능한 것은 추가로 제공되는 pages 페키지 덕분입니다. pages 페키지는 리소스의 파일을 읽어 분석합니다. 또한, 분석한 재료를 기반으로 자동 페이지를 생성해 주게 됩니다.

보다 자세한 것은 pages 패키지 부분을 참고하시길 바랍니다.