बुनियादी प्लगइन निर्माण और प्रकाशन प्रक्रिया
सिद्धांत
- क्रॉस-डोमेन प्लगइन के उदाहरण के रूप में, प्लगइन तीन भागों में विभाजित होता है, एक क्रॉस-डोमेन मिडलवेयर प्रोग्राम फ़ाइल, दूसरा मिडलवेयर कॉन्फ़िगरेशन फ़ाइल
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.php
redis कॉन्फ़िगरेशन औरthinkorm.php
thinkorm कॉन्फ़िगरेशन का समर्थन करती है। ये सभी कॉन्फ़िगरेशन स्वचालित रूप से वेबमैन द्वारा पहचाने जाएंगे। - प्लगइन निम्नलिखित विधि का उपयोग करके कॉन्फ़िगरेशन प्राप्त करता है:
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.php
redis कॉन्फ़िगरेशन,thinkorm.php
thinkorm कॉन्फ़िगरेशन। कॉन्फ़िगरेशन का प्रारूप वेबमैन के समान है, ये कॉन्फ़िगरेशन स्वचालित रूप से वेबमैन द्वारा पहचाने जाएंगे और कॉन्फ़िगरेशन में विलय हो जाएंगे।
इस्तेमाल करते समय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/आपका उपयोगकर्ता नाम/admin
GitHub परियोजना का पता जमा करें, इस प्रकार आप एक प्लगइन के प्रकाशन को पूरा कर चुके हैं।
सूचना
यदि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
प्रिंट करेगा।