المعلوماتية > برمجيات

أطر عمل PHP؛ Slim سلِم

سلِم (Slim) هو إطار عمل PHP صغير يساعد على كتابة تطبيقات ويب كاملة المواصفات مع واجهات برمجة التطبيقات (Programming Interface Application: APIs) للتطبيقات التي تستهلك البيانات أو تعيد استخدامها أو تنشرها. إضافةً إلى أنه أداة رائعة لبناء النماذج الأولية السريعة (Prototyping). ويُعدّ إطار العمل Slim في جوهره المُرسِل الذي يتلقى طلب بروتوكول نقل النص HyperText Transfer Protocol (HTTP)، ثم يستدعي كلٌّ منها روتين الاتصال المناسب، وأخيرًا يعيد الإجابة على بروتوكول HTTP (1).

يجب تثبيت جميع المتطلبات يدوياً، ويتطلب تشغيل إطار عمل Slim version 4 ما يأتي (2):

لاستخدام Slim يُوصَى بتثبيت Composer، ومن ثم الولوج إلى مسار المشروع وتنفيذ التعليمة:

composer require slim/slim: “4

تنزّل هذه التعليمة إطارَ عمل Slim واعتماديات الطرف الثالث إلى مشروع تطبيق الويب.

وقبل التمكُّن من مباشرة استخدام إطار العمل Slim؛ لا بُدّ من اختيار تطبيق PSR-7 المناسب لتطبيق الويب المطلوب تطويره، والغرض من ذلك توفير مجموعة من الواجهات الشائعة لرسائل بروتوكول HTTP (3). وللتمكن من ذلك أوتوماتيكيًّا واستخدام AppFactory::create() و App::run() دون الحاجة إلى إنشاء طلب خادم (ServerRequest) يدويًّا؛ يجب تثبيت أحد التطبيقات الآتية (4):

composer require slim/psr7

composer require nyholm/psr7 nyholm/p> 7-server

composer require guzzlehttp/psr7 http-interop/http-factory-guzzle

composer require laminas/laminas-diactoros

تُزوَّد المسارات (routes) والطبقة المتوسطة (middleware) بغرض من نمط طلب PSR-7 الذي يمثل طلب بروتوكول HTTP الحالي الذي يتلقاه خادم الويب.

يحتوي طلب بروتوكول HTTP على إحدى الطرائق الآتية:

GET – POST – PUT – DELETE – HEAD – PATCH – OPTION

ومن الممكن الحصول على نوع طريقة طلبات بروتوكول HTTP عن طريق استخدام تابع getMethod() (5).

أمّا عن حالة الاستجابة؛ فتحتوي كل إجابة لبروتوكول HTTP على رمز لحالة الكود. ويُعرّف هذا الرمز نوع استجابة بروتوكول HTTP المراد إرجاعه إلى العميل. والقيمة الافتراضية لرمز استجابة PSR-7 هي 200. ومن الممكن الحصول على حالة الاستجابة عن طريق استخدام تابع getStatusCode() (6).

بُنِيَت موجهات إطار عمل Slim استنادًا إلى Fast Route(3)؛ وهي مكتبة توفر تنفيذًا سريعًا للموجّه المستند على التعبير المنتظم (reular expression (7، وتتميز بسرعتها وثباتها. 

وعلى الرغم من استخدام هذه المكتبة لإنجاز عمليات التوجيه في إطار العمل؛ فقد فُصِلت نواة التطبيق على نحو كامل عنها وأُنشِئت واجهات لتمهيد الطريق لاستخدام مكتبات توجيه أخرى.

يمكن تعريف المسارات في تطبيق الويب باستخدام proxy method على أنموذج Slim\App. ويؤمّن إطار العمل طرائق لبرتوكول HTTP الأكثر شيوعًا (8).

يحتوي إطار العمل Slim على معالج أخطاء مَهمّته حل جميع أخطاء PHP غير المُعالجة. كذلك يتلقى الطلبات والاستجابات الحالية لبروتوكول HTTP؛ إذ يُعدّ ويعيد الاستجابة المناسبة إلى بروتوكول HTTP الخاص بالعميل (9).

يزوّد إطار عمل Slim موجّهًا سريعًا وقويًّا يوجه الاستدعاءات إلى طرائق الطلب الخاصة ببروتوكول نقل النص HTTP وإلى معرف الموارد الموحّد Uniform Resource Identifier (URLs(. وتُدعَم المعاملات ومطابقة النماذج في هذا الموجه.

يُبنى تطبيق الويب باستخدام طبقة متوسطة مركزية تُحسن طلبات بروتوكول نقل النص HTTP وأغراض الاستجابة في التطبيق.

يمكن لمستخدمي إطار عمل Slim التحدث إلى مطوّريه لمشاركة الأكواد البرمجية أو لاكتشاف المشكلات المعقدة باستخدام (11):

1- Slack هنا

2- قناة Freenode IRC على #slimphp

المصادر:

1- Slim 4 documentation [Internet]. Slim Framework. [cited 2022Aug2]. Available from: هنا

2- Microsoft. URL rewrite [Internet]. The Official Microsoft IIS Site. [cited 2022Aug2]. Available from: هنا

3- Php-Fig. PHP-Fig/HTTP-message: The purpose of this PSR is to provide a set of common interfaces for HTTP messages as described in RFC 7230 and RFC 7231 [Internet]. GitHub. [cited 2022Aug2]. Available from: هنا

4- Installation [Internet]. Slim Framework. Slim; [cited 2022Aug2]. Available from: هنا

5- Request [Internet]. Slim Framework. [cited 2022Aug2]. Available from: هنا

6- Response [Internet]. Slim Framework. Slim; [cited 2022Aug2]. Available from: هنا

7- Routing [Internet]. Slim Framework. Slim; [cited 2022Aug2]. Available from: هنا

8- FastRoute - Fast request router for PHP. GitHub. Available from: هنا

9- Error middleware [Internet]. Slim Framework. Slim; [cited 2022Aug2]. Available from: هنا

10- Error Handling Middleware. Slim Framework. Available from:  هنا

11- Slim [Internet]. Slim Framework. 2022 [cited 2022Aug2]. Available from: هنا