تثبيت الإضافات التطبيقية
كل إضافة تطبيق هي تطبيق كامل، ويطبق الشفرة المصدرية في مسار "{المشروع الرئيسي}/plugin"
نصيحة
باستخدام الأمرphp webman app-plugin:create {اسم الإضافة}
(يتطلب webman/console>=1.2.16) يمكنك إنشاء إضافة تطبيقية محلية،
على سبيل المثالphp webman app-plugin:create cms
سينشئ هيكل الدليل التالي.
plugin/
└── cms
├── app
│ ├── controller
│ │ └── IndexController.php
│ ├── exception
│ │ └── Handler.php
│ ├── functions.php
│ ├── middleware
│ ├── model
│ └── view
│ └── index
│ └── index.html
├── config
│ ├── app.php
│ ├── autoload.php
│ ├── container.php
│ ├── database.php
│ ├── exception.php
│ ├── log.php
│ ├── middleware.php
│ ├── process.php
│ ├── redis.php
│ ├── route.php
│ ├── static.php
│ ├── thinkorm.php
│ ├── translation.php
│ └── view.php
└── public
نرى أن لدى الإضافة التطبيقية هيكل دليل وملفات تكوين مشابهة لتلك في webman. في الواقع، تجربة تطوير إضافة تطبيقية مشابهة تقريبًا لتجربة تطوير مشروع webman العادي، مع الانتباه للنقاط التالية.
مساحة الأسماء
معيار PSR4 يتبع مساحة الأسماء وتسمية الدلائل في الإضافات التطبيقية، ونظرًا لأن الإضافات توضع جميعها في مجلد الإضافات، فإن مساحة الأسماء تبدأ بـ plugin، على سبيل المثال plugin\cms\app\controller\UserController
، حيث يعتبر cms المجلد الرئيسي للشفرة المصدرية في الإضافة.
عنوان URL
مسارات عناوين الإضافات التطبيقية تبدأ بـ /app
، على سبيل المثال، عنوان URL لـ plugin\cms\app\controller\UserController
هو http://127.0.0.1:8787/app/cms/user
.
الملفات الثابتة
يتم وضع الملفات الثابتة في plugin/{الإضافة}/public
، على سبيل المثال، عند الوصول لhttp://127.0.0.1:8787/app/cms/avatar.png
فإنه في الواقع يتم الحصول على الملف plugin/cms/public/avatar.png
.
ملفات التكوين
تكوين الإضافة التطبيقية مماثل لمشروع webman العادي، ومع ذلك، يكون تكوين الإضافة التطبيقية عادة ما يكون ساري المفعول فقط للإضافة الحالية دون تأثير على المشروع الرئيسي.
على سبيل المثال، قيمة plugin.cms.app.controller_suffix
تؤثر فقط على لاحقة المتحكم للإضافة، ولا تؤثر على المشروع الرئيسي.
على سبيل المثال، قيمة plugin.cms.app.controller_reuse
تؤثر فقط على ما إذا كان سيتم إعادة استخدام المتحكم في الإضافة، ولا تؤثر على المشروع الرئيسي.
على سبيل المثال، قيمة plugin.cms.middleware
تؤثر فقط على الوسيطة في الإضافة، ولا تؤثر على المشروع الرئيسي.
على سبيل المثال، قيمة plugin.cms.view
تؤثر فقط على العرض الذي تستخدمه الإضافة، ولا تؤثر على المشروع الرئيسي.
على سبيل المثال، قيمة plugin.cms.container
تؤثر فقط على الحاوية التي تستخدمها الإضافة، ولا تؤثر على المشروع الرئيسي.
على سبيل المثال، قيمة plugin.cms.exception
تؤثر فقط على فئة معالجة الاستثناء في الإضافة، ولا تؤثر على المشروع الرئيسي.
ولكن نظرًا لأن المسار هو عام، فإن تكوين الإضافة يؤثر أيضًا على المستوى العالمي.
الحصول على التكوين
طريقة الحصول على تكوين إضافة معينة هي config('plugin.{الإضافة}.{التكوين المحدد}')
، على سبيل المثال، يمكن الحصول على كل التكوينات في plugin/cms/config/app.php
عن طريق config('plugin.cms.app')
بالإضافة إلى أنه بإمكان المشروع الرئيسي أو الإضافات الأخرى استخدام config('plugin.cms.xxx')
للحصول على تكوينات الإضافة cms.
تكوينات غير مدعومة
الإضافات التطبيقية لا تدعم تكوينات server.php، session.php، app.request_class
، app.public_path
، app.runtime_path
.
قاعدة البيانات
يمكن للإضافة تكوين قاعدة البيانات الخاصة بها، على سبيل المثال، محتوى plugin/cms/config/database.php
كالتالي
return [
'default' => 'mysql',
'connections' => [
'mysql' => [ // mysql اسم الاتصال
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'قاعدة البيانات',
'username' => 'اسم المستخدم',
'password' => 'كلمة المرور',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
'admin' => [ // admin اسم الاتصال
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'قاعدة البيانات',
'username' => 'اسم المستخدم',
'password' => 'كلمة المرور',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
],
];
الطريقة المستخدمة للإشارة إليها هي Db::connection('plugin.{الإضافة}.{اسم الاتصال}');
، على سبيل المثال
use support\Db;
Db::connection('plugin.cms.mysql')->table('user')->first();
Db::connection('plugin.cms.admin')->table('admin')->first();
إذا كنت ترغب في استخدام قاعدة بيانات المشروع الرئيسي، يمكنك استخدامها مباشرة، على سبيل المثال
use support\Db;
Db::table('user')->first();
// يفترض أن المشروع الرئيسي لديه أيضًا اتصالًا بـ admin
Db::connection('admin')->table('admin')->first();
نصيحة
كذلك يمكنك استخدام تفكير orm بنفس الطريقة
الذاكرة المؤقتة (Redis)
طريقة استخدام Redis مشابهة لاستخدام قاعدة البيانات، على سبيل المثال، plugin/cms/config/redis.php
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
],
'cache' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 1,
],
];
عند الاستخدام
use support\Redis;
Redis::connection('plugin.cms.default')->get('key');
Redis::connection('plugin.cms.cache')->get('key');
بنفس الطريقة، إذا كنت ترغب في إعادة استخدام تكوين Redis في المشروع الرئيسي
use support\Redis;
Redis::get('key');
// يفترض أن المشروع الرئيسي لديه أيضًا اتصالًا cache
Redis::connection('cache')->get('key');
التسجيل (اللوق)
طريقة استخدام فئة اللوق مشابهة لاستخدام قاعدة البيانات
use support\Log;
Log::channel('plugin.admin.default')->info('test');
إذا كنت ترغب في إعادة استخدام تكوين اللوق في المشروع الرئيسي، يمكنك استخدامها مباشرة
use support\Log;
Log::info('محتوى السجل');
// يفترض أن المشروع الرئيسي يحتوي على تكوين سجل اختبار
Log::channel('test')->info('محتوى السجل');
تثبيت وإلغاء تثبيت الإضافات التطبيقية
عند تثبيت الإضافات التطبيقية، يكفي نسخ مجلد الإضافة إلى مسار {المشروع الرئيسي}/plugin
، ويجب إعادة تحميل أو إعادة تشغيل لجعلها نشطة.
أما عند إلغاء التثبيت، يمكن حذف مجلد الإضافة المقابل في مسار {المشروع الرئيسي}/plugin
.