모든 응용 프로그램은이 클래스에서 파생 되거나이 응용 프로그램 클래스의 형제 인 클래스를 사용하게됩니다.
이 클래스는 다음을 제공합니다.
시간이 지남에 따라 응용 프로그램이 증가하고 경로 수가 증가합니다. 따라서 모든 경로를 독립형 구성 파일에 저장하는 편리한 방법을 제공했습니다. 따라서 응용 프로그램 (또는 파생 된 클래스) 객체의 생성자에서 모든 경로를 초기화 할 필요는 없습니다.
어떻게 사용할 수 있는지 알아 보겠습니다.
우선 프로젝트 디렉토리에서 구성 파일을 작성합니다 ./conf/routes.php. 다음과 같아야합니다.
$ callbackProvider = new SomeCallbackClass ();
return
[
[
' route ' => ' /news/ ' , // your route
' callback ' => ' displayNewsLine ' // this must be the method name of your
// Application derived class
] ,
[
' route ' => ' /news/[i:news_id]/ ' , // your route
' callback ' => ' displayExactNews ' , // this must be the method name of your
' method ' => ' POST ' // Application derived class
] ,
[
' route ' => ' /some-route/ ' ,
' method ' => ' GET ' ,
' callback ' => [ // here we specify callback as pair [object, method]
callbackProvider ,
' someMethod '
]
]
];'메소드'필드는 설정되지 않으면 기본값을 얻을 수 있습니다.
자체 구성 파일을 지정할 수도 있습니다.
그런 다음 Application을 호출합니다 :: loadRoutesfromConfig ()
$ app -> loadRoutesFromConfig ( ' ./conf/my-config.php ' );이 클래스는보다 복잡한 렌더링 및 오류 처리로 간단한 응용 프로그램 루틴을 제공합니다.
응용 프로그램 클래스 경로에서는 문자열 만 반환 할 수 있습니다. 그러나 CommonApplication 클래스를 사용하면 템플릿 자리 표시 자에 배치 될 문자열 배열을 반환 할 수 있습니다.
Simple example:
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => ' Route main '
];
}
}여기서 경로 핸들러는 페이지 / 간단한 페이지 / - '제목'과 '메인'의 두 부분을 생성합니다. 이 두 부분은 각각 {title} 및 {main} 자리 표시 자로 삽입됩니다.
더 복잡한 예 :
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => new View ( ' Generated main content ' )
];
}
}여기서 우리는 클래스보기 (또는보기에서 파생 된 클래스)의 인스턴스를 응용 프로그램 페이지 컴파일터로 전달합니다. 컴파일 된 HTML 컨텐츠를 반환 해야하는 View :: 렌더 메소드를 호출합니다.
구성에 AL 경로를 유지할 수도 있습니다. JSON 구성을 사용할 수 있습니다.
[
{
"route" : "/route1/" ,
"callback" : "route1" ,
"method" : "GET"
} ,
{
"route" : "/route2/" ,
"callback" : "route2" ,
"method" : [ "GET" , "POST" ]
}
]이 데이터는 프로젝트의 './conf/'dir에 저장해야합니다. 또는 아래와 같이 명시 적으로 구성을로드합니다 (메소드 LoadRoutesFromConfig 사용).
또한 응용 프로그램 클래스에서 이러한 방법이 필요합니다.
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
// loading config on custom path
$ this -> loadRoutesFromConfig ( ' ./my-routes.json ' );
}
function route1 ()
{
return [
// here result
];
}
function route2 ()
{
return [
// here result
];
}
}메소드의 한 호출로 LoadRoutesfromConfigs의 하나의 호출로 여러 구성을로드 할 수 있습니다.
function __construct ( $ template )
{
parent :: __construct ( $ template );
$ this -> loadRoutesFromConfigs ([ ' ./conf/my/routes.json ' , ' ./conf/my-routes.php ' ]);
}또는 동일 :
function __construct ( $ template )
{
parent :: __construct ( $ template );
$ this -> loadRoutesFromDirectory ( ' ./conf ' );
} 템플릿 변수 action-message 에서 대체 될 메시지 목록으로 파일을 만들 수 있습니다.
이 파일은 디렉토리 %your-application-class-directory%/res/action-messages.json 에 저장해야합니다
그런 다음 클래스에 $_GET['action-message'] 매개 변수를 찾으면 action-message 대체가 트리거됩니다.
*.tpl 파일의 콘텐츠를 공통보기로 간단히 출력 할 수 있습니다. 정적 페이지 나 정적 페이지 부품을 렌더링 해야하는 경우 유용 할 수 있습니다. 이러한 목적을 위해 별도의 클래스와 별도의보기 방법을 생성하지 않아도됩니다.
아주 간단합니다.
// here $template is an instance of the MezonHtmlTemplateHtmlTemplate class
// and 'block-name' is a block name in this class
$ view = new Mezon Application ViewStatic ( $ template , ' block-name ' );Mezon 템플릿에 대한 자세한 내용은 참조하십시오
TBA