تطبيقات متعددة
في بعض الأحيان قد يتقسم المشروع إلى عدة مشاريع فرعية، على سبيل المثال، قد يتم تقسيم متجر إلى مشروع المتجر الرئيسي، واجهة برمجة تطبيقات المتجر، ونظام إدارة المتجر، وكلها تستخدم نفس إعدادات قاعدة البيانات.
تسمح لك Webman بتخطيط دليل التطبيقات الخاص بك على النحو التالي:
app
├── shop
│ ├── controller
│ ├── model
│ └── view
├── api
│ ├── controller
│ └── model
└── admin
├── controller
├── model
└── view
عند زيارة العنوان http://127.0.0.1:8787/shop/{المتحكم}/{الطريقة}
، سيتم الوصول إلى المتحكم والطريقة ضمن app/shop/controller
.
عند زيارة العنوان http://127.0.0.1:8787/api/{المتحكم}/{الطريقة}
، سيتم الوصول إلى المتحكم والطريقة ضمن app/api/controller
.
عند زيارة العنوان http://127.0.0.1:8787/admin/{المتحكم}/{الطريقة}
، سيتم الوصول إلى المتحكم والطريقة ضمن app/admin/controller
.
في Webman، يمكن أيضًا تخطيط دليل التطبيقات بهذه الطريقة.
app
├── controller
├── model
├── view
│
├── api
│ ├── controller
│ └── model
└── admin
├── controller
├── model
└── view
بهذه الطريقة، عند زيارة العنوان http://127.0.0.1:8787/{المتحكم}/{الطريقة}
، سيتم الوصول إلى المتحكم والطريقة ضمن app/controller
. وعندما يبدأ المسار بـ api أو admin، سيتم الوصول إلى المتحكم والطريقة في الدليل المعني.
عند وجود تطبيقات متعددة، يجب أن تتوافق مساحة أسماء الفئات مع psr4
، على سبيل المثال، ملف app/api/controller/FooController.php
مشابه لما يلي:
<?php
namespace app\api\controller;
use support\Request;
class FooController
{
}
إعدادات Middleware لتطبيقات متعددة
أحيانًا ترغب في إعداد Middleware مختلف للتطبيقات المختلفة، على سبيل المثال، قد يحتاج تطبيق api
إلى Middleware للتحكم في الوصول، في حين يحتاج admin
إلى Middleware للتحقق من تسجيل دخول المسؤول، لذا قد يبدو إعداد config/midlleware.php
كما يلي:
return [
// Middleware عالمي
'' => [
support\middleware\AuthCheck::class,
],
// Middleware لتطبيق api
'api' => [
support\middleware\AccessControl::class,
],
// Middleware لتطبيق admin
'admin' => [
support\middleware\AdminAuthCheck::class,
support\middleware\SomeOtherClass::class,
],
];
قد لا تتوفر Middleware المذكورة أعلاه، فهذا فقط كمثال يوضح كيفية إعداد Middleware لكل تطبيق.
ترتيب تنفيذ Middleware هو Middleware عالمي
-> Middleware للتطبيق
.
للمزيد من المعلومات حول تطوير Middleware، يرجى الرجوع إلى فصل Middleware
إعدادات معالجة الاستثناءات لتطبيقات متعددة
بنفس الطريقة، قد ترغب في إعداد فئات معالجة استثناءات مختلفة للتطبيقات المختلفة، على سبيل المثال، إذا حدث استثناء في تطبيق shop
، قد ترغب في تقديم صفحة رسالة ودية؛ أما إذا حدث استثناء في تطبيق api
، فقد ترغب في إعادة JSON بدلاً من صفحة. سيبدو ملف إعداد فئات معالجة الاستثناءات للتطبيقات المختلفة config/exception.php
كما يلي:
return [
'shop' => support\exception\Handler::class,
'api' => support\exception\ApiHandler::class,
];
على عكس Middleware، يمكن لكل تطبيق تكوين فئة معالجة استثناء واحدة فقط.
قد لا تتوفر فئة معالجة الاستثناءات المذكورة أعلاه، فهذا فقط كمثال يوضح كيفية إعداد معالجة الاستثناءات لكل تطبيق.
للمزيد من المعلومات حول تطوير معالجة الاستثناءات، يرجى الرجوع إلى فصل معالجة الاستثناءات