$ 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 التي تم إنشاؤها BENNIKIC ، لذلك يجب أن يكون من الممكن تحديد الطرق على النحو المحدد بواسطة Fastroute. يتم مطابقة المسار عبر PCRE مع تعيين SELIMITER على @ ، لذلك كن على دراية عند تعيين معلمة 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 ليكون مركزيًا للطلب والاستجابة ، واتباع العقيدة ، سيتم التعامل مع طلب إلى تطبيق ما مرة واحدة ، بحيث يتم تضمين كل ما هو مطلوب أثناء دورة الحياة (أو يجب إلحاقه) في كائن الطلب أو الاستجابة.
تعد المعالجات على التعريف مجموعة من s callable وسيتم تنفيذها بشكل متزامن بالترتيب على مطابقة التعريف. يتم دمج Middlewares المسجلة لتشغيلها قبل أو بعد ذلك في "مكدس المكالمات".
إذا تم إرجاع كائن استجابة في معالج ، فسيتم تفسيره على أنه استجابة العملية ولا يمكن إعادة تعيينه (ولكن تم تعديله).
التطبيق هو المكون الرئيسي لمونتي. وسوف تتعامل مع تسجيل معالجات الطريق ، والأدوات الوسطى وإعداد إضافي للطلب والاستجابة. أنه يحتوي بشكل عام على أربع حالات استخدام مختلفة. الوصول إلى الطلب أو كائن الاستجابة لعملية الطلب الحالية ، وتسجيل معالجات الطريق وتسجيل الأوساط المتوسطة التي سيتم تنفيذها أثناء دورة الحياة.
بالإضافة إلى طرق حالة الاستخدام ، فإنها تحتوي أيضًا على واجهة من أساليب الاسم المستعارة لجعل الكود تكتب كثيرًا أكثر قابلية للتفهم وأنيق.
تقوم هذه الطريقة بتسجيل معالجات الطلب الجديدة لمسار معين فيما يتعلق بمجموعة من طرق الطلب التي يجب إرسالها.
| دعوى | يكتب | وصف |
|---|---|---|
| أساليب $ | خيط[] | جمع أساليب الطلب في الأحرف الكبيرة. |
| طريق $ | خيط | الطريق الذي يتم تسجيل المعالجات إليه. |
| ... معالجات $ | قابلة للاستدعاء [] | مجموعة من المعالجات التي سيتم تنفيذها. |
// ...
$ app -> handle (
[ ' GET ' ],
' /index ' ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | طريقة | وصف |
|---|---|
| الكل (طريق $ ، ... $ معالجات) | طريقة الاسم المستعارة التي ستتفاعل مع جميع طرق الطلب |
| احصل على ($ Route ، ... $ Handlers) | طريقة الاسم المستعار التي ستتفاعل للحصول على الطلبات |
| Post ($ Route ، ... $ Handlers) | طريقة الاسم المستعار التي ستتفاعل مع طلبات البريد |
| رأس (طريق $ ، ... معالجات $) | طريقة الاسم المستعارة التي ستتفاعل مع طلبات الرأس |
| خيارات ($ route ، ... $ handlers) | طريقة الاسم المستعارة التي ستتفاعل مع طلبات الخيارات |
| التصحيح ($ route ، ... $ handlers) | طريقة الاسم المستعارة التي ستتفاعل مع طلبات التصحيح |
| ضع ($ route ، ... $ handlers) | طريقة الاسم المستعارة التي ستتفاعل مع طلبات الطلب |
| حذف (طريق $ ، ... معالجات $) | طريقة الاسم المستعارة التي ستتفاعل مع حذف الطلبات |
تقوم هذه الطريقة بتسجيل معالجات إضافية سيتم تنفيذها دون النظر إلى طريقة الطلب.
| دعوى | يكتب | وصف |
|---|---|---|
| وضع $ | عدد صحيح | موقف دورة LIFECYCLE (Application :: prepend - قبل ، التطبيق :: إلحاق - بعد) عندما يجب تنفيذ المعالجات. |
| ... معالجات $ | قابلة للاستدعاء [] | مجموعة من المعالجات التي سيتم تنفيذها. |
// ...
$ app -> middleware (
Monty Application:: PREPEND ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | طريقة | وصف |
|---|---|
| قبل (... $ معالجات) | طريقة الاسم المستعارة التي ستضيف معالجات الطلب التي تم تنفيذها قبل معالجة الطلب الفعلي |
| بعد (... معالجات $) | طريقة الاسم المستعارة التي ستضيف معالجات الطلب التي تم تنفيذها بعد معالجة الطلب الفعلي |
هذه الطريقة استرداد كائن الطلب الحالي.
هذه الطريقة استرداد كائن الاستجابة الحالي.
كائن الطلب هو القطعة المركزية للعملية. أنه يحتوي على إمكانية إلحاق الخصائص والخدمات اللازمة أثناء الطلب. من خلال معالجة الطلب ، يبقى كائن الطلب صغيرًا ويتم تسجيل التبعيات الضرورية فقط عند الحاجة.
طريقة لاسترداد طلب IP.
طريقة لاسترداد قيمة رأس المحتوى المطلوبة.
طريقة لاسترداد معلمات $ _files.
يمكن استخدام هذه الطريقة لاسترداد خاصية أو خدمة تم تعيينها على الطلب.
| دعوى | يكتب | وصف |
|---|---|---|
| ... المعلمات $ | مختلط | اجتازت مجموعة من المعلمات لفترة طويلة إلى طريقة Setter. |
// ...
$ request -> get ( ' logger ' , new SomeDefault ());
$ request -> get ( ' property ' , ' some default value ' );
// ... طريقة لاسترداد طلب RAW المضمن في كائن monty request.
طريقة لاسترداد مضيف HTTP بما في ذلك البروتوكول.
طريقة للتحقق مما إذا كانت طريقة الطلب هي قيمة محددة.
| دعوى | يكتب | وصف |
|---|---|---|
| طريقة $ | خيط | طريقة الطلب للتحقق. |
طريقة للتحقق مما إذا كان الطلب المرسلة آمنًا (HTTPS/SSL).
طريقة لاسترداد مسار الطلب.
طريقة لاسترداد قيمة إرجاع المعالج السابق في المكدس.
طريقة لاسترداد المعلمات $ _get.
طريقة لاسترداد طريقة الطلب.
طريقة لاسترداد معلمات $ _Post.
طريقة لاسترداد قيم معلمات الطريق تتطابق مع مثيل معالج الطريق.
يمكن استخدام هذه الطريقة لإضافة مثيل فئة أو خاصية إلى الطلب الذي يمكن الوصول إليه على طول مكدس الاتصال. عادةً ما تأخذ الطريقة ما لا يقل عن معلمتين ، أولاً معرف الخاصية/الخدمة كسلسلة وثانيًا قيمة قياسية أو كائن.
لا يُسمح بتعيين المصفوفات كخصائص طلب لتجنب الكود الفوضوي والموارد.
| دعوى | يكتب | وصف |
|---|---|---|
| ... المعلمات $ | مختلط | اجتازت مجموعة من المعلمات لفترة طويلة إلى طريقة Setter. |
// ...
$ request -> set ( ' logger ' , new SomeLogger ()); // valid
$ request -> set ( ' property ' , ' some value ' ); // valid
$ request -> set ( ' not_possible ' , []); // invalid
// ... طريقة لتعيين عودة المعالج السابقة.
| دعوى | يكتب | وصف |
|---|---|---|
| قيمة $ | مختلط | قيمة إرجاع المعالج السابق. |
طريقة لتحديث معلمات المسار المحددة على الطلب.
| دعوى | يكتب | وصف |
|---|---|---|
| $ params | صفيف | معلمات الطريق المراد تعيينها. |
يُفترض عمومًا أن كائن الاستجابة يحل نفسه - وهذا يعني أنه ينبغي التعامل مع كيفية تقديم الاستجابة المحددة في استجابة التطبيق. يمكنك استخدام كائن استجابة مكون HTTP Symfony HTTP ، أو تحديد المكونات الخاصة ، والتي تحتاج إلى تنفيذ monty repositInterface.
يتم تعريف المعالج على أنه callable والذي يتم تسجيله في تعريف معالج الطريق أو الوسيطة.
يمكن أن يكون المعالج ، وظائف Lambda بسيطة ، وكائنات الإغلاق ، والفئات ، ... عمليا أي شيء يمكن التذرع به. لا حدود هنا.
© 2017 Willi Eßer