すべてのアプリケーションはこのクラスから派生しているか、このアプリケーションクラスの兄弟であるクラスを使用します。
このクラスは次のとおりです。
時間とともに、アプリケーションが増加し、ルートの数が増加します。そのため、すべてのルートをスタンドアロン構成ファイルに保存する便利な方法を提供しました。そのため、アプリケーション(または派生クラス)オブジェクトのコンストラクターのすべてのルートを初期化する必要はありません。
使用方法をご覧ください。
まず、プロジェクトディレクトリにconfigファイル./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クラスでは、テンプレートのプレースホルダーに配置される文字列の配列を返すことができます。
簡単な例:
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => ' Route main '
];
}
}ここで、ルートのハンドラーは、ページの2つの部分 / simple-ページ / - 「タイトル」と「メイン」を生成します。これらの2つの部分は、それぞれ{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 :: renderメソッドを呼び出します。
ALルートを構成に保持することもできます。 JSON Configsを使用できます。
[
{
"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
];
}
}メソッドの1つの呼び出しで複数の構成をロードできることに注意してください
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