$ composer require troublete/monty
<?php
require_once ' path/to/vendor/autoload.php ' ;
$ application = new Monty Application ();
$ application -> get (
' /request[/{someId}] ' ,
function ( Monty Request $ req , Monty Response $ res , $ someId ) {
// do some awesome stuff
return new Symfony Component HttpFoundation JsonResponse ([]);
}
); การแยกวิเคราะห์เส้นทางขึ้นอยู่กับแพ็คเกจ Fastroute ที่สร้างขึ้นเป็น @nikic ดังนั้นส่วนใหญ่ควรเป็นไปได้ที่จะกำหนดเส้นทางตามที่ระบุโดย Fastroute การจับคู่เส้นทางจะทำผ่าน PCRE โดยมีการตั้งค่าตัวคั่นเป็น @ ดังนั้นโปรดทราบเมื่อตั้งค่าพารามิเตอร์ Regex ที่กำหนดไว้ตรงกับ @ คำจำกัดความเส้นทางอนุญาตให้ชิ้นส่วนตัวแปรในตอนท้ายของคำจำกัดความที่ทำเครื่องหมายด้วย [] เนื่องจากเป็นไปได้การจับคู่จะลองใช้การแสดงออกปกติหลายครั้งตามลำดับความซับซ้อนของลูกหลานและจะกลับมาในการจับคู่รูปแบบแรก
การกำหนดเส้นทางที่ถูกต้อง
/search/{searchId} => routing with parameter
/search/{searchId:d+} => routing with parameter with defined regex
/search[/{searchId}] => routing with optional parameter
/search/index[es] => routing with optional part
การกำหนดเส้นทางไม่ถูกต้อง
/search/index[es]/{searchId} => optional chunk in the middle
คำจำกัดความการจัดการจะถูกประมวลผลตามลำดับของการลงทะเบียนทันทีที่การแข่งขันหนึ่งรายการกับคำขอที่ได้รับมันจะส่งกลับและปิดกระบวนการ
นอกจากนี้ Monty ได้รับการออกแบบให้เป็นคำขอและการตอบสนองเป็นศูนย์กลางหลังจากความเชื่อที่ว่าจะมีการจัดการแอปพลิเคชันหนึ่งครั้งเมื่อทุกอย่างที่จำเป็นในระหว่างวงจรชีวิตรวมอยู่ (หรือควรต่อท้าย) ในคำขอหรือการตอบสนอง
ตัวจัดการในคำจำกัดความเป็นอาร์เรย์ของ callable และจะดำเนินการแบบซิงโครนัสตามลำดับในการจับคู่คำจำกัดความ Middlewares ที่ลงทะเบียนเพื่อทำงานก่อนหรือหลังจะถูกรวมเข้ากับ "Call Stack" นี้
หากวัตถุตอบกลับถูกส่งคืนในตัวจัดการมันจะถูกตีความว่าเป็นการตอบสนองของกระบวนการและไม่สามารถรีเซ็ตได้ (แต่แก้ไข)
แอปพลิเคชันเป็นองค์ประกอบหลักของ Monty มันจะจัดการการลงทะเบียนของตัวจัดการเส้นทางมิดเดิ้ลแวร์และการตั้งค่าเพิ่มเติมของคำขอและการตอบสนอง โดยทั่วไปจะมีสี่กรณีการใช้งานที่แตกต่างกัน การเข้าถึงวัตถุคำขอหรือการตอบสนองของกระบวนการร้องขอปัจจุบันลงทะเบียนตัวจัดการเส้นทางและการลงทะเบียน Middlewares ซึ่งจะดำเนินการในระหว่างวงจรชีวิต
นอกเหนือจากวิธีการใช้งานแล้วยังมีอินเทอร์เฟซของวิธีการนามแฝงเพื่อให้รหัสการเขียนของคุณเข้าใจและเพรียวบางมากขึ้น
วิธีนี้ลงทะเบียนตัวจัดการคำขอใหม่สำหรับเส้นทางที่เฉพาะเจาะจงเกี่ยวกับการรวบรวมวิธีการร้องขอที่ควรจัดส่ง
| การโต้แย้ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| $ วิธี | สตริง [] | การรวบรวมวิธีการขอในตัวพิมพ์ใหญ่ |
| $ เส้นทาง | สาย | เส้นทางที่ลงทะเบียนตัวจัดการ |
| ... $ handlers | เรียกได้ [] | คอลเลกชันของตัวจัดการที่จะดำเนินการ |
// ...
$ app -> handle (
[ ' GET ' ],
' /index ' ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | วิธี | คำอธิบาย |
|---|---|
| ทั้งหมด ($ route, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อวิธีการร้องขอทั้งหมด |
| Get ($ Route, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อการ ร้องขอ |
| โพสต์ ($ เส้นทาง, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อ การโพสต์ คำขอ |
| Head ($ Route, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อการร้องขอ ส่วนหัว |
| ตัวเลือก ($ route, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อคำขอ ตัวเลือก |
| Patch ($ Route, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อคำขอ แพตช์ |
| Put ($ route, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อการ ร้องขอ |
| DELETE ($ ROUTE, ... $ handlers) | วิธีนามแฝงซึ่งจะตอบสนองต่อ การลบ คำขอ |
วิธีนี้ลงทะเบียนตัวจัดการเพิ่มเติมซึ่งจะดำเนินการโดยไม่คำนึงถึงวิธีการร้องขอ
| การโต้แย้ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| $ วาง | จำนวนเต็ม | ตำแหน่ง Lifecycle ของคำขอ (แอปพลิเคชัน :: precend - ก่อนหน้าแอปพลิเคชัน :: ผนวก - หลังจาก) เมื่อควรดำเนินการตัวจัดการ |
| ... $ handlers | เรียกได้ [] | คอลเลกชันของตัวจัดการที่จะดำเนินการ |
// ...
$ app -> middleware (
Monty Application:: PREPEND ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | วิธี | คำอธิบาย |
|---|---|
| ก่อน (... $ handlers) | วิธีนามแฝงซึ่งจะเพิ่มตัวจัดการคำขอดำเนินการ ก่อน การจัดการคำขอจริง |
| หลังจาก (... $ handlers) | วิธีนามแฝงซึ่งจะเพิ่มตัวจัดการคำขอที่ดำเนินการ หลังจาก การจัดการคำขอจริง |
วิธีนี้ดึงวัตถุคำขอปัจจุบัน
วิธีนี้ดึงวัตถุตอบสนองปัจจุบัน
วัตถุคำขอเป็นส่วนตรงกลางของกระบวนการ มันมีความเป็นไปได้ที่จะผนวกคุณสมบัติและบริการที่จำเป็นในระหว่างการร้องขอ ด้วยการจัดการวัตถุคำขอนั้นมีขนาดเล็กและมีเพียงการพึ่งพาที่จำเป็นเท่านั้นที่ลงทะเบียนเมื่อจำเป็น
วิธีการดึงข้อมูลคำขอ IP
วิธีการดึงค่าส่วนหัวประเภทเนื้อหาที่ร้องขอ
วิธีการดึงพารามิเตอร์ $ _files
วิธีนี้สามารถใช้เพื่อดึงคุณสมบัติหรือบริการที่ตั้งค่าไปยังคำขอ
| การโต้แย้ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| ... $ พารามิเตอร์ | ผสมกัน | การรวบรวมพารามิเตอร์ผ่านไปนานถึงวิธีการตั้งค่า |
// ...
$ request -> get ( ' logger ' , new SomeDefault ());
$ request -> get ( ' property ' , ' some default value ' );
// ... วิธีการดึงคำขอดิบที่ฝังอยู่ในวัตถุ Monty Request
วิธีการดึงโฮสต์ HTTP รวมถึงโปรโตคอล
วิธีการตรวจสอบว่าวิธีการร้องขอเป็นค่าเฉพาะหรือไม่
| การโต้แย้ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| $ วิธี | สาย | วิธีการขอตรวจสอบ |
วิธีการตรวจสอบว่าคำขอที่ส่งมีความปลอดภัยหรือไม่ (HTTPS/SSL)
วิธีการดึงเส้นทางคำขอ
วิธีการดึงค่าคืนสินค้าของตัวจัดการก่อนหน้าในสแต็ก
วิธีการดึงพารามิเตอร์ $ _get
วิธีการดึงวิธีการร้องขอ
วิธีการดึงพารามิเตอร์ $ _post
วิธีการดึงค่าพารามิเตอร์เส้นทางตรงกับอินสแตนซ์ตัวจัดการเส้นทาง
วิธีนี้สามารถใช้เพื่อเพิ่มอินสแตนซ์คลาสหรือคุณสมบัติลงในคำขอที่สามารถเข้าถึงได้ตามสแต็กการโทร โดยปกติวิธีการใช้เวลาอย่างน้อยสองพารามิเตอร์ ID ของคุณสมบัติ/บริการเป็นสตริงและอันดับที่สองเป็นค่าสเกลาร์หรือวัตถุ
อาร์เรย์ไม่ได้รับอนุญาตให้ตั้งค่าเป็นคุณสมบัติการร้องขอเพื่อหลีกเลี่ยงรหัสยุ่งเหยิงและการพะวงของทรัพยากร
| การโต้แย้ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| ... $ พารามิเตอร์ | ผสมกัน | การรวบรวมพารามิเตอร์ผ่านไปนานถึงวิธีการตั้งค่า |
// ...
$ request -> set ( ' logger ' , new SomeLogger ()); // valid
$ request -> set ( ' property ' , ' some value ' ); // valid
$ request -> set ( ' not_possible ' , []); // invalid
// ... วิธีการตั้งค่าตัวจัดการก่อนหน้า
| การโต้แย้ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| $ มูลค่า | ผสมกัน | ค่าส่งคืนของตัวจัดการก่อนหน้า |
วิธีการอัปเดตพารามิเตอร์เส้นทางที่ตั้งค่าเป็นคำขอ
| การโต้แย้ง | พิมพ์ | คำอธิบาย |
|---|---|---|
| $ params | อาร์เรย์ | พารามิเตอร์เส้นทางที่จะตั้งค่า |
โดยทั่วไปวัตถุตอบสนองจะถือว่าเป็นตัวแก้ไขตัวเอง - หมายความว่าควรจัดการกับวิธีการตอบสนองที่กำหนดไว้ควรแสดงในการตอบสนองของแอปพลิเคชัน คุณสามารถใช้วัตถุการตอบสนองส่วนประกอบ Symfony HTTP หรือกำหนดวัตถุของตัวเองซึ่ง จำเป็น ต้องใช้ monty responseInterface
ตัวจัดการถูกกำหนดให้เป็น callable ซึ่งลงทะเบียนในนิยามตัวจัดการเส้นทางหรือมิดเดิลแวร์
Handler สามารถ เป็นฟังก์ชั่นแลมบ์ดาอย่างง่ายวัตถุปิดคลาสคลาส ... ทุกสิ่งที่เป็นไปได้ที่จะเรียกใช้ ไม่มีข้อ จำกัด ที่นี่
© 2017 Willi Eßer