बुनियादी प्लगइन निर्माण और प्रकाशन प्रक्रिया
सिद्धांत
- क्रॉस-डोमेन प्लगइन के उदाहरण के रूप में, प्लगइन तीन भागों में विभाजित होता है, एक क्रॉस-डोमेन मिडलवेयर प्रोग्राम फ़ाइल, दूसरा मिडलवेयर कॉन्फ़िगरेशन फ़ाइल
middleware.phpऔर तीसरा जो आदेश द्वारा स्वचालित रूप से उत्पन्नInstall.phpहै। - हम आदेश का उपयोग करके तीन फ़ाइलों को पैक करते हैं और कॉम्पोजर पर परिभाषित करते हैं।
- जब उपयोगकर्ता कॉम्पोजर का उपयोग करके क्रॉस-डोमेन प्लगइन स्थापित करता है, तो प्लगइन में
Install.phpक्रॉस-डोमेन मिडलवेयर प्रोग्राम फ़ाइल और कॉन्फ़िगरेशन फ़ाइल को{मुख्य परियोजना}/config/pluginमें कॉपी करेगा, जिससे वेबमैन लोड हो सके। इससे क्रॉस-डोमेन मिडलवेयर फ़ाइल का स्वचालित कॉन्फ़िगरेशन सक्रिय हो जाता है। - जब उपयोगकर्ता कॉम्पोजर का उपयोग करके उस प्लगइन को हटा देता है, तो
Install.phpसंबंधित क्रॉस-डोमेन मिडलवेयर प्रोग्राम फ़ाइल और कॉन्फ़िगरेशन फ़ाइल को हटा देगा, जिससे प्लगइन का स्वचालित रूप से अनइंस्टॉल होना संभव होता है।
मानक
- प्लगइन का नाम दो भागों में विभाजित होता है,
विक्रेताऔरप्लगइन नाम, जैसेwebman/push, यह कॉम्पोजर पैकेज नाम के अनुसार है। - प्लगइन कॉन्फ़िगरेशन फ़ाइलें एक समान रूप से
config/plugin/विक्रेता/प्लगइन नाम/में रखी जाती हैं (कंसोल आदेश स्वचालित रूप से कॉन्फ़िगरेशन निर्देशिका बनाएगा)। यदि प्लगइन को कॉन्फ़िगरेशन की आवश्यकता नहीं है, तो स्वचालित रूप से बनाई गई कॉन्फ़िगरेशन निर्देशिका को हटा देना चाहिए। - प्लगइन कॉन्फ़िगरेशन निर्देशिका केवल
app.phpप्लगइन मुख्य कॉन्फ़िगरेशन,bootstrap.phpप्रक्रिया प्रारंभ कॉन्फ़िगरेशन,route.phpरूट कॉन्फ़िगरेशन,middleware.phpमिडलवेयर कॉन्फ़िगरेशन,process.phpकस्टम प्रक्रिया कॉन्फ़िगरेशन,database.phpडेटाबेस कॉन्फ़िगरेशन,redis.phpredis कॉन्फ़िगरेशन औरthinkorm.phpthinkorm कॉन्फ़िगरेशन का समर्थन करती है। ये सभी कॉन्फ़िगरेशन स्वचालित रूप से वेबमैन द्वारा पहचाने जाएंगे। - प्लगइन निम्नलिखित विधि का उपयोग करके कॉन्फ़िगरेशन प्राप्त करता है:
config('plugin.विक्रेता.प्लगइन नाम.कॉन्फ़िगरेशन फ़ाइल.विशिष्ट कॉन्फ़िगरेशन तत्व');, उदाहरण के लिएconfig('plugin.webman.push.app.app_key') - यदि प्लगइन की अपनी डेटाबेस कॉन्फ़िगरेशन है, तो इसे निम्नलिखित तरीके से पहुँचा जा सकता है।
illuminate/databaseके लिएDb::connection('plugin.विक्रेता.प्लगइन नाम.विशिष्ट कनेक्शन'),thinkromके लिएDb::connct('plugin.विक्रेता.प्लगइन नाम.विशिष्ट कनेक्शन') - यदि प्लगइन को
app/निर्देशिका के अंतर्गत व्यावसायिक फ़ाइलें डालने की आवश्यकता है, तो सुनिश्चित करें कि यह उपयोगकर्ता परियोजना और अन्य प्लगइनों के साथ टकराव न करे। - प्लगइन को मुख्य परियोजना में फ़ाइलों या निर्देशिकाओं की नकल करने से बचना चाहिए, जैसे क्रॉस-डोमेन प्लगइन को छोड़कर कॉन्फ़िगरेशन फ़ाइल को मुख्य परियोजना में नकल करना, मिडलवेयर फ़ाइल को
vendor/webman/cros/srcमें रखा जाना चाहिए, इसे मुख्य परियोजना में नकल करने की आवश्यकता नहीं है। - प्लगइन नामकरण परिशुद्धता के लिए बड़े अक्षरों का उपयोग करने की सिफारिश की जाती है, उदाहरण के लिए
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.phpredis कॉन्फ़िगरेशन,thinkorm.phpthinkorm कॉन्फ़िगरेशन। कॉन्फ़िगरेशन का प्रारूप वेबमैन के समान है, ये कॉन्फ़िगरेशन स्वचालित रूप से वेबमैन द्वारा पहचाने जाएंगे और कॉन्फ़िगरेशन में विलय हो जाएंगे।
इस्तेमाल करते समयpluginको पूर्वसूचना के रूप में उपयोग करें, जैसे किconfig('plugin.foo.admin.app');
प्लगइन निर्यात करें
जब हम प्लगइन विकसित कर लेते हैं, तो प्लगइन को निर्यात करने के लिए निम्नलिखित आदेश दें
php webman plugin:export --name=foo/admin
निर्यात
विवरण
निर्यात करने के बादconfig/plugin/foo/adminनिर्देशिका कोvendor/foo/admin/srcमें कॉपी किया जाएगा, साथ ही एकInstall.phpफ़ाइल स्वचालित रूप से उत्पन्न की जाएगी, जिसमें प्लगइन को स्थापित और हटाेने के लिए कुछ क्रियाएँ निष्पादित की जाएंगी।
स्थापित करने का मानक कार्यvendor/foo/admin/srcमें मौजूद कॉन्फ़िगरेशन को वर्तमान परियोजना केconfig/pluginमें कॉपी करना है।
हटाने का मानक कार्य वर्तमान परियोजना केconfig/pluginमें मौजूद कॉन्फ़िगरेशन फ़ाइल को हटाना है।
आपInstall.phpको संशोधित कर सकते हैं ताकि प्लगइन स्थापित करने और हटाने के दौरान कुछ कस्टम क्रियाएँ की जा सकें।
प्लगइन जमा करें
- मान लीजिए कि आपके पास github और packagist खाता है।
- github पर एक
adminपरियोजना बनाएँ और कोड अपलोड करें, परियोजना का पता मान लेंhttps://github.com/आपका उपयोगकर्ता नाम/admin - पता
https://github.com/आपका उपयोगकर्ता नाम/admin/releases/newपर जाएँ और एक रिलीज़ जैसेv1.0.0जारी करें। - packagist पर जाएँ, नेविगेशन में
Submitपर क्लिक करें, अपनीhttps://github.com/आपका उपयोगकर्ता नाम/adminGitHub परियोजना का पता जमा करें, इस प्रकार आप एक प्लगइन के प्रकाशन को पूरा कर चुके हैं।
सूचना
यदिpackagistमें प्लगइन जमा करते समय वर्ण टकराव दिखता है, तो आप विक्रेता का नाम फिर से ले सकते हैं, जैसेfoo/adminकोmyfoo/adminमें बदल दें।
बाद में, जब आपके प्लगइन परियोजना का कोड अपडेट होता है, तो आपको कोड को GitHub पर समन्वयित करना होगा, और फिर से पता https://github.com/आपका उपयोगकर्ता नाम/admin/releases/new पर जाएँ और एक नया रिलीज़ जारी करें, फिर https://packagist.org/packages/foo/admin पृष्ठ पर जाकर Update बटन पर क्लिक करें, संस्करण को अपडेट करें।
प्लगइन में आदेश जोड़ें
कभी-कभी हमारे प्लगइन को कुछ कस्टम आदेशों की आवश्यकता होती है ताकि कुछ सहायक कार्यक्षमता प्रदान की जा सके, जैसे 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("Admin जोड़ें $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 चलाने पर Admin जोड़ें jerry प्रिंट करेगा।