ऐप प्लगइन

प्रत्येक ऐप प्लगइन एक पूर्ण ऐप है, सोर्स कोड {मुख्य परियोजना}/प्लगइन निचे रखा गया है

सुझाव
php webman app-plugin:create {प्लगइन नाम} (webman/console>=1.2.16 की आवश्यकता है) का इस्तेमाल करके आप लोकल में एक ऐप प्लगइन बना सकते हैं,
उदाहरण के लिए php webman app-plugin:create cms निम्नलिखित निर्देशिका संरचना बनाएगा

प्लगइन /
└── cms
    ├── ऐप
    │   ├── कंट्रोलर
    │   │   └── IndexController.php
    │   ├── अपवाद
    │   │   └── Handler.php
    │   ├── functions.php
    │   ├── मध्यवार
    │   ├── मॉडल
    │   └── दृश्य
    │       └── इंडेक्स
    │           └── index.html
    ├── कॉन्फ़िग
    │   ├── ऐप.php
    │   ├── autoload.php
    │   ├── container.php
    │   ├── database.php
    │   ├── exception.php
    │   ├── log.php
    │   ├── middleware.php
    │   ├── process.php
    │   ├── redis.php
    │   ├── route.php
    │   ├── static.php
    │   ├── thinkorm.php
    │   ├── अनुवाद.php
    │   └── दृश्य.php
    └── सार्वजनिक

हम देख सकते हैं कि एक ऐप प्लगइन का डायरेक्टरी संरचना और कॉन्फ़िग फ़ाइलों में वेबमैन का समान है। वास्तव में एक ऐप प्लगइन विकास करने का अनुभव वेबमैन परियोजना की तरह ही होता है, केवल निम्नलिखित कुछ पहलुओं का ध्यान देना होता है।

नेमस्पेस

प्लगइन डायरेक्टरी और नाम सर्वर 4 नियमों का पालन करते हैं, क्योंकि प्लगइन सभी प्लगइन डायरेक्टरी में रखे जाते हैं, इसलिए नामस्पेस प्लगइन से शुरू होते हैं, उदाहरण के लिए plugin\cms\app\controller\UserController। यहां cms प्लगइन के सोर्स कोड मुख्य डायरेक्टरी है।

यूआरएल एक्सेस

ऐप प्लगइन यूआरएल पते के पथ 'र के साथ शुरू होते हैं, उदाहरण के लिए 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 फ़ाइल प्राप्त की जाती है।

कॉन्फ़िग फ़ाइल

प्लगइन की कॉन्फ़िग एकसा आम वेबमैन प्रोजेक्ट की तरह होती है, लेकिन सामान्यत: केवल प्लगइन के लिए कॉन्फ़िग आमतौर पर केवल प्लगइन के लिए प्रभावशाली होती है, मुख्य परियोजना के लिए आमतौर पर कोई प्रभाव नहीं होता है।
उदाहरण के लिए plugin.cms.app.controller_suffix की मान केवल प्लगइन के नियंत्रक सत्र को प्रभावित करती है, मुख्य परियोजना को कोई प्रभाव नहीं होता है।
उदाहरण के लिए plugin.cms.app.controller_reuse की मान केवल प्लगइन के नियंत्रक को पुनर्चलित करती है, मुख्य परियोजना को कोई प्रभाव नहीं होता है।
उदाहरण के लिए plugin.cms.middleware की मान केवल प्लगइन के मध्यवार को प्रभावित करती है, मुख्य परियोजना को कोई प्रभाव नहीं होता है।
उदाहरण के लिए plugin.cms.view की मान केवल प्लगइन द्वारा प्रयोग की जाने वाली दृश्य को प्रभावित करती है, मुख्य परियोजना को कोई प्रभाव नहीं होता है।
उदाहरण के लिए plugin.cms.container की मान केवल प्लगइन द्वारा प्रयोग की जाने वाली संदर्भ को प्रभावित करती है, मुख्य परियोजना को कोई प्रभाव नहीं होता है।
उदाहरण के लिए plugin.cms.exception की मान केवल प्लगइन के असामान्य सम्बोधन क्रिया को प्रभावित करती है, मुख्य परियोजना को कोई प्रभाव नहीं होता है।
लेकिन यहां तक की रूटिंग समग्र होती है, इसलिए प्लगइन कॉन्फ़िगरेशन का रूटिंग भी समग्र रूप से प्रभावित करती है।

कॉन्फ़िग प्राप्त करना

किसी भी प्लगइन की कॉन्फ़िग प्राप्ति के लिए उपाय config('plugin.{प्लगइन}.{विस्तारित कॉन्फ़िग}'); है, उदाहरण के लिए config('plugin.cms.app') से plugin/cms/config/app.php की सभी कॉन्फ़िग प्राप्त की जा सकती है।
उसी तरह, मुख्य परियोजना या अन्य प्लगइन 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' => [ // व्यवस्थापक जोड़ना नाम है
            '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();
// मान लीजिए मुख्य परियोजना ने एक और व्यवस्थापक जोड़ना भी कॉन्फ़िगर किया है
Db::connection('admin')->table('admin')->first();

सुझाव
thinkorm भी इसी तरह का उपयोग होता है
रेडिस
रेडिस का प्रयोग तय करने के आसपास डेटाबेस की तरह होता है, जैसे 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');

उसी तरह से, अगर मुख्य परियोजना की रेडिस कॉन्फ़िगरेशन का पुनर्भव करना हो

use support\Redis;
Redis::get('key');
// मान लीजिए कि मुख्य परियोजना में एक कैश कनेक्शन भी कॉन्फ़िगर किया गया है
Redis::connection('cache')->get('key');

आगे पढ़ें: https://www.protranslate.net/en/

नये सत्र साथ ही पुस्तक व भाषाएँ भी जांचें।

लॉग

लॉग कक्षा का उपयोग डेटाबेस का उपयोग करने की तरह होता है

use support\Log;
Log::channel('plugin.admin.default')->info('test');

अगर मुख्य परियोजना की लॉग कॉन्फ़िगरेशन का पुनर्भव करना हो, सीधे उपयोग करें

use support\Log;
Log::info('लॉग सामग्री');
// मान लीजिए कि मुख्य परियोजना में एक test लॉग कॉन्फ़िगरेशन भी है
Log::channel('test')->info('लॉग सामग्री');

एप्लिकेशन प्लगइन स्थापना और स्थानांतरण

एप्लिकेशन प्लगइन की स्थापना के लिए, केवल प्लगइन निर्देशिका को {मुख्य परियोजना}/plugin निर्देशिका में कॉपी करना होगा, पुनरारंभ या पुनः आरंभ की जरूरत होगी ताकि प्रभाव पड़ सके।
अनइंस्टॉल करते समय सीधे {मुख्य परियोजना}/plugin निर्देशिका में संबंधित प्लगइन निर्देशिका हटा दें।