मूलभूत प्लगइन जेनरेट और प्रकाशन प्रक्रिया

सिद्धांत

  1. क्रॉस-डोमेन प्लगइन के उदाहरण के रूप में, प्लगइन तीन हिस्सों में विभाजित होता है, एक है क्रॉस-डोमेन मिडलवेयर प्रोग्राम फ़ाइल, एक है मिडलवेयर कॉन्फ़िगरेशन फ़ाइल middleware.php, और एक है कमांड के माध्यम से जेनरेट की गई Install.php।
  2. हम तीन फ़ाइलों को पैक करके और कॉम्पोजर में प्रकाशित करने के लिए कमांड का उपयोग करते हैं।
  3. जब उपयोगकर्ता क्रॉस-डोमेन प्लगइन को कॉम्पोजर का उपयोग करके इंस्टॉल करता है, तो प्लगइन में Install.php क्रॉस-डोमेन मिडलवेयर प्रोग्राम फ़ाइल और कॉन्फ़िगरेशन फ़ाइल को {प्रमुख परियोजना}/कॉन्फ़िग/प्लगइन में कॉपी करेगा, जिससे वेबमैन लोड हो सके। क्रॉस-डोमेन मिडलवेयर फ़ाइल स्वचालित रूप से प्रभावी हो जाती है।
  4. जब उपयोगकर्ता कॉम्पोजर का उपयोग करके इस प्लगइन को हटाता है, तो Install.php क्रॉस-डोमेन मिडलवेयर प्रोग्राम फ़ाइल और कॉन्फ़िगरेशन फ़ाइल को हटा देगा, जिससे प्लगइन स्वचालित रूप से अनइंस्टॉल हो जाए।

    मानक

  5. प्लगइन का नाम दो भागों से मिलकर बनता है, निर्माता और प्लगइन का नाम, उदाहरण के लिए webman/push, यह कंपोजर पैकेज के साथ मेल खाता है।
  6. प्लगइन कॉन्फ़िग फ़ाइल सामान्य रूप से config/plugin/निर्माता/प्लगइन का नाम/ में रखा जाता है (कंसोल कमांड स्वचालित रूप से कॉन्फ़िग निर्माता बनाएगा)। यदि प्लगइन कॉन्फ़िग की आवश्यकता नहीं है, तो स्वचालित रूप से बनाए गए कॉन्फ़िग निर्माता को हटाना चाहिए।
  7. प्लगइन कॉन्फ़िग निर्माता में सिर्फ़ app.php प्लगइन मुख्य कॉन्फ़िग, bootstrap.php प्रोसेस प्रारंभ कॉन्फ़िग, route.php रूट कॉन्फ़िग, middleware.php मध्यवर्ती कॉन्फ़िग, process.php कस्टम प्रोसेस कॉन्फ़िग, database.php डेटाबेस कॉन्फ़िग, redis.php रेडिस कॉन्फ़िग, thinkorm.php थिंकओर्म कॉन्फ़िग समर्थित हैं। ये सभी कॉन्फ़िग webman द्वारा स्वचालित रूप से पहचाने जाएंगे।
  8. प्लगइन कॉन्फ़िग प्राप्त करने के लिए निम्नलिखित तरीके से प्राप्त करें config('plugin.निर्माता.प्लगइन का नाम.कॉन्फ़िग फ़ाइल.विस्तृत कॉन्फ़िग आइटम'), उदाहरण के लिएconfig('plugin.webman.push.app.app_key')
  9. यदि प्लगइन के पास अपनी अपनी डेटाबेस कॉन्फ़िग है, तो निम्नलिखित तरीके से उपयोग करें। illuminate/database के लिए Db::connection('plugin.निर्माता.प्लगइन का नाम.विस्तृत कनेक्शन'), thinkrom के लिए Db::connct('plugin.निर्माता.प्लगइन का नाम.विस्तृत कनेक्शन')
  10. अगर प्लगइन को app/ निर्देशिका में व्यापार फ़ाइल रखने की आवश्यकता है, तो सुनिश्चित करें कि यह प्रोजेक्ट या अन्य प्लगइन के साथ टकराव नहीं करती।
  11. प्लगइन को अधिकतम संभावना है कि मुख्य प्रोजेक्ट में फ़ाइल या निर्देशिका की प्रतिलिपि बनाने से बचाएं, उदाहरण के लिए क्रॉस डोमेन प्लगइन, कॉन्फ़िग फ़ाइल को मुख्य प्रोजेक्ट को छोड़कर, मध्यवर्ती फ़ाइल को vendor/webman/cros/src में डालना चाहिए, मुख्य प्रोजेक्ट में प्रतिलिपि नहीं बनानी चाहिए।
  12. प्लगइन नामस्थान का सुझाव दिया जाता है कि उच्च अक्षर का उपयोग करें, उदाहरण के लिए Webman/Console।

    उदाहरण

'webman/console' कमांड लाइन को स्थापित करें

कॉम्पोजर कमांड से webman/console को इंस्टॉल करें
'composer require webman/console'

प्लगइन बनाएं

मान लीजिए कि बनाया गया प्लगइन का नाम 'foo/admin' है (नाम भी इसके बाद जारी करने के लिए कंपोसर का प्रोजेक्ट नाम होता है, नाम छोटे अक्षर में होना चाहिए)
कमांड लाइन चलाएं
php webman plugin:create --name=foo/admin

प्लगइन बनाने के बाद, 'vendor/foo/admin' नामक डायरेक्टरी तैयार हो जाएगी जो प्लगइन संबंधित फ़ाइलों को संग्रहीत करने के लिए होगी और 'config/plugin/foo/admin' नामक डायरेक्टरी भी तैयार होगी जो प्लगइन संबंधित कॉन्फ़िगरेशन को संग्रहीत करने के लिए होगी।

ध्यान दें
'config/plugin/foo/admin' निम्नलिखित कॉन्फ़िगरेशन का समर्थन करती है, app.php प्लगइन मुख्य कॉन्फ़िगरेशन, bootstrap.php प्रक्रिया प्रारंभ कॉन्फ़िगरेशन, route.php मार्ग कॉन्फ़िगरेशन, middleware.php मध्यवर्ती कॉन्फ़िगरेशन, process.php प्रक्रिया कॉन्फ़िगरेशन, database.php डेटाबेस कॉन्फ़िगरेशन, redis.php रेडिस कॉन्फ़िगरेशन, thinkorm.php सोचिए कॉन्फ़िगरेशन। कॉन्फ़िगरेशन प्रारूप webman से समान होता है, यह सभी कॉन्फ़िगरेशन को webman द्वारा स्वचालित रूप से पहचान और संयोजित कर देगी।
उपयोग के दौरान 'plugin' को प्रीफ़िक्स के रूप में उपयोग करें, उदाहरण के लिए config('plugin.foo.admin.app'); से अभिगम करें।

प्लगइन निर्यात करें

प्लगइन विकसित करने के बाद, निम्नलिखित कमांड निर्यात करें
php webman plugin:export --name=foo/admin

विवरण
निर्यात करने के बाद, config/plugin/foo/admin नामक निर्देशिका को vendor/foo/admin/src के अंदर कॉपी कर दिया जाएगा, साथ ही एक Install.php भी स्वचालित स्थापना और स्वचालित अनइंस्टॉल के समय कुछ कार्य करने के लिए उपयोग होती है।
स्थापना की डिफ़ॉल्ट प्रक्रिया वर्डर/फू/एडमिन/src के नियमों को मौजूदा प्रोजेक्ट कॉन्फ़िगरेशन के तहत कॉपी करना है
हटाने की डिफ़ॉल्ट प्रक्रिया मौजूदा प्रोजेक्ट कॉन्फ़िगरेशन के तहत कन्फ़िग फाइलें हटाना होगा
आप स्वचालित स्थापना और अनइंस्टॉल करने के समय कुछ अपनी कस्टम प्रक्रियाएँ करने के लिए Install.php को संशोधित कर सकते हैं।

प्लगइन सबमिट करें

  • मान लीजिए कि आपके पास github और packagist खाता है
  • github पर एक एडमिन प्रोजेक्ट बनाएं और कोड अपलोड करें, प्रोजेक्ट पता मान लें https://github.com/आपका-उपयोगकर्ता-नाम/admin
  • पते पर जाएं https://github.com/आपका-उपयोगकर्ता-नाम/admin/releases/new और एक रिलीज जैसे v1.0.0 प्रकाषण करें
  • packagist पर जाएं नेविगेशन में क्लिक करें सबमिट, आपका गिटहब प्रोजेक्ट पता https://github.com/आपका-उपयोगकर्ता-नाम/admin
    को सबमिट करें, जिससे एक प्लगइन का प्रकाषण पूरा हो जाएगा

सुझाव
अगर packagist में प्लगइन सबमिट करने पर विरोध हो, तो आप एक नया वणिज़ी का नाम ले सकते हैं, जैसे foo/admin को myfoo/admin में बदल दें

आगे जब भी आपके प्लगइन प्रोजेक्ट में कोड अपडेट होता है, तो आपको उस कोड को गिटहब पर सिंक करने की आवश्यकता होती है, और फिर से https://github.com/आपका-उपयोगकर्ता-नाम/admin/releases/new पता पर जाकर एक रिलीज फिर से प्रकाषित करें, और फिर https://packagist.org/packages/foo/admin पृष्ठ पर जाकर अपडेट बटन दबाकर संस्करण अपडेट करें

फ़्लगिन में कमांड जोड़ें

कई बार हमारे प्लगइन को कुछ अपनी विशेष कमांडों की आवश्यकता होती है, जैसे webman/redis-queue प्लगइन को इंस्टॉल करने के बाद, प्रोजेक्ट में स्वयं redis-queue:consumer कमांड जोड़ा जाएगा, उपयोगकर्ता केवल php webman redis-queue:consumer send-mail चलाकर परियोजना में SendMail.php नामक एक कंस्यूमर कक्षा बना सकता है, जो तेजी से विकास करने में सहायक होता है।

मान लें कि foo/admin प्लगइन में foo-admin:add कमांड जोड़ने की आवश्यकता है, तो निम्नलिखित कदमों का पालन करें।

नया कमांड जोड़ें

नया कमांड फ़ाइल बनाएँ vendor/foo/admin/src/FooAdminAddCommand.php

<?php

namespace Foo\Admin;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class FooAdminAddCommand extends Command
{
    protected static $defaultName = 'foo-admin:add';
    protected static $defaultDescription = 'यहां कमांड लाइन विवरण है';

    /**
     * @return void
     */
    protected function configure()
    {
        $this->addArgument('name', InputArgument::REQUIRED, 'नाम जोड़ें');
    }

    /**
     * @param InputInterface $input
     * @param OutputInterface $output
     * @return int
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $name = $input->getArgument('name');
        $output->writeln("व्यवस्थापक ने $name को जोड़ दिया");
        return self::SUCCESS;
    }

}

ध्यान दें
प्लगइन के बीच कमांड संघर्ष से बचने के लिए, कमांड लाइन प्रारूप के लिए व्यापार-प्लगइन नाम: विशेष कमांड का प्रस्तावित करना उपयुक्त है, जैसे कि foo/admin प्लगइन की सभी कमांड को foo-admin: से पहले होना चाहिए, जैसे foo-admin:add

विन्यास जोड़ें

नया कॉन्फ़िग बनाएँ config/plugin/foo/admin/command.php

<?php

use Foo\Admin\FooAdminAddCommand;

return [
    FooAdminAddCommand::class,
    // ....अनेक कॉन्फ़िगरेशन जोड़ें...
];

संकेत
command.php प्लगइन को कस्टम कमांड कॉन्फ़िगर करने के लिए होता है, इस एरे में प्रत्येक तत्व एक कमांड लाइन कक्ष फ़ाइल को दर्शाता है, प्रत्येक फ़ाइल एक कमांड को दर्शाती है। जब उपयोगकर्ता कमांड लाइन चलाता है, webman/console स्वचालित रूप से प्रत्येक प्लगइन की command.php में सेट किए गए कस्टम कमांड को लोड करता है। कमांड लाइन से संबंधित अधिक जानकारी के लिए कृपया कमांड लाइन देखें।

निर्वाचन निष्पादित करें

php webman plugin:export --name=foo/admin कमांड को चलाकर प्लगइन का निर्यात करें, और इसे packagist पर सबमिट करें। इस प्रकार, उपयोगकर्ता foo/admin प्लगइन को इंस्टॉल करने के बाद, foo-admin:add कमांड जोड़ दिया जाएगा। php webman foo-admin:add jerry चलाने पर व्यवस्थापक ने jerry को जोड़ दिया प्रिंट होगा।