แอปพลิเคชันทั้งหมดของคุณจะได้มาจากคลาสนี้หรือจะใช้คลาสซึ่งเป็นพี่น้องของคลาสแอปพลิเคชันนี้
คลาสนี้ให้:
เมื่อเวลาผ่านไปแอปพลิเคชันของคุณจะเติบโตและจำนวนเส้นทางจะเพิ่มขึ้น ดังนั้นเราจึงให้วิธีที่สะดวกในการจัดเก็บเส้นทางทั้งหมดในไฟล์กำหนดค่าแบบสแตนด์อโลน ดังนั้นจึงไม่จำเป็นต้องเริ่มต้นเส้นทางทั้งหมดในตัวสร้างวัตถุของแอปพลิเคชัน (หรือคลาสใดก็ได้)
มาดูกันว่าคุณจะใช้งานได้อย่างไร
ก่อนอื่นสร้างไฟล์ 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 '
]
]
];โปรดทราบว่าไม่ได้ตั้งค่าฟิลด์ 'Method' แล้วจะเริ่มต้นเพื่อรับ
คุณยังสามารถระบุไฟล์กำหนดค่าของคุณเอง
จากนั้นเพียงแค่เรียกแอปพลิเคชัน :: 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 '
];
}
}ที่นี่ตัวจัดการเส้นทางสร้างสองส่วนของหน้า / หน้าง่าย / - 'ชื่อ' และ 'หลัก' ส่วนสองส่วนนี้จะถูกแทรกลงใน {title} และ {main} placeholders ตามลำดับ
ตัวอย่างที่ซับซ้อนมากขึ้น:
class ExampleApplication extends CommonApplication
{
/**
* Constructor.
*/
function __construct ( $ template )
{
parent :: __construct ( $ template );
}
function actionSimplePage ()
{
return [
' title ' => ' Route title ' ,
' main ' => new View ( ' Generated main content ' )
];
}
}ที่นี่เราผ่านอินสแตนซ์ของมุมมองคลาส (หรือคลาสใดก็ได้ที่ได้จากมุมมอง) ไปยังตัวรวบรวมหน้าแอปพลิเคชัน มันจะเรียกดู :: วิธีการแสดงผลซึ่งจะต้องส่งคืนเนื้อหา HTML ที่รวบรวม
คุณยังสามารถเก็บเส้นทางอัลในการกำหนดค่า คุณสามารถใช้การกำหนดค่า JSON:
[
{
"route" : "/route1/" ,
"callback" : "route1" ,
"method" : "GET"
} ,
{
"route" : "/route2/" ,
"callback" : "route2" ,
"method" : [ "GET" , "POST" ]
}
]ข้อมูลนี้จะต้องเก็บไว้ใน './conf/' DIR ของโครงการของคุณ หรือโหลดการกำหนดค่าอย่างชัดเจนดังที่แสดงด้านล่าง (โดยใช้ Method 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