शुरुआत करना - संदर्भ जानकारी (Drupal 8)
Drupal 8 PHP भाषा की कई उन्नत विशेषताओं और जटिल बाहरी लाइब्रेरीज़ का उपयोग करता है, ताकि तृतीय-पक्ष डेवलपर्स को किसी भी CMS में उपलब्ध सबसे उन्नत API प्रदान किया जा सके। हालाँकि अनुभवी Drupal 7 डेवलपर्स को कुछ बड़े बदलाव दिखाई दे सकते हैं, लेकिन इसकी अधिकांश बुनियादी संरचना परिचित बनी रहती है।
यदि Drupal 8 मॉड्यूल डेवलपर गाइड में प्रस्तुत कोई भी सामग्री आपके लिए नई है, तो नीचे दी गई जानकारी आपकी मदद कर सकती है। हालाँकि, Drupal 8 मॉड्यूल के वर्णन पर जाने के लिए आपको इन सबका गहन ज्ञान आवश्यक नहीं है।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP)
OOP, जो शुरुआत में जटिल लग सकता है, अब PHP विकास का मानक तरीका बन गया है।
PHP की सर्वोत्तम प्रथाओं का सामान्य अवलोकन करने के लिए phptherightway.com पढ़ें। Drupal वहाँ बताए गए सभी टूल्स और तरीकों का उपयोग नहीं करता, लेकिन यह PHP और भाषा की कई विशेषताओं का शानदार परिचय प्रदान करता है।
क्लासेज़ और ऑब्जेक्ट्स पर PHP की आधिकारिक डाक्यूमेंटेशन और नीचे दिए गए उपयोगी ट्यूटोरियल्स पढ़कर OOP का ज्ञान ताज़ा करें:
- PHP OOP इन फुल इफ़ेक्ट
- ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (विकिपीडिया)
- शुरुआती लोगों के लिए ऑब्जेक्ट-ओरिएंटेड PHP (tuts+)
- OOP अवधारणाएँ (tutorialspoint.com)
- PHP में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (phpro.org)
- PHP OOP वीडियो श्रृंखला (YouTube)
- प्रोग्रामिंग की नींव: ऑब्जेक्ट-ओरिएंटेड डिज़ाइन (lynda.com)
- जानने योग्य 12 PHP OOP अवधारणाएँ
- SymfonyCasts पर OOP ट्रैक
Drupal 8 कुछ सामान्य डिज़ाइन पैटर्न का भी उपयोग करता है, इसलिए उनका सामान्य ज्ञान रखना उपयोगी है:
फ़ैक्टरी पैटर्न और लेट स्टैटिक बाइंडिंग
सॉफ़्टवेयर डिज़ाइन पैटर्न (विकिपीडिया)
डिज़ाइन पैटर्न की नींव (lynda.com)
@todo: उपयोग किए जाने वाले डिज़ाइन पैटर्न पर अतिरिक्त लिंक जोड़ें ...
PHP नेमस्पेस
यदि आप PHP नेमस्पेस अवधारणा से परिचित नहीं हैं, तो इन लेखों को पढ़ें:
- PHP नेमस्पेस का उपयोग कैसे करें
- PHP: नेमस्पेस
- PHP नेमस्पेस पर वीडियो
- PHP नेमस्पेस की व्याख्या (Dayle Rees)
- PHP में नेमस्पेसिंग (tuts+)
अधिकांश मामलों में, Drupal कोड मॉड्यूल के आधार पर नेमस्पेस किया जाता है जिससे वह संबंधित होता है।
उदाहरण: block.module के लिए नेमस्पेस
namespace Drupal\block;
@todo: समझाएँ कि कभी यह Drupal\ होता है और कभी Drupal\\[Controller|Form|Plugin|...] क्यों होता है, और कैसे तय करें कौन-सा उपयोग करना है...
Drupal नेमस्पेस मानकों के बारे में अधिक जानें। Drupal में PSR-4 के उपयोग के बारे में यहाँ देखें: PSR-4 का उपयोग Drupal में। ठीक से कॉन्फ़िगर किया गया कोड एडिटर PHP नेमस्पेस पहचान और ऑटो-कंप्लीशन समर्थन प्रदान करेगा।
डिपेंडेंसी इंजेक्शन
हालाँकि डिपेंडेंसी इंजेक्शन भी एक OOP डिज़ाइन पैटर्न है, हम इसे यहाँ अलग से उल्लेख करते हैं क्योंकि Drupal 8 में इसका व्यापक उपयोग होता है, और कोर APIs तक पहुँच और उनका उपयोग करने के लिए इसका मूल ज्ञान आवश्यक है।
PHP में डिपेंडेंसी इंजेक्शन के बारे में पढ़ें। विशेष रूप से यह लेख क्योंकि Drupal Symfony के सर्विस कंटेनर का उपयोग करता है।
यह भी देखें:
Symfony
Symfony एक PHP फ्रेमवर्क है जिसे Drupal कोड दोहराव को कम करने के लिए उपयोग करता है। Drupal 8 में रूटिंग, सेशन, और सर्विस कंटेनर प्रबंधन के लिए उपयोग किया जाने वाला अधिकांश कोड Symfony 2 (और बाद में Symfony 3) से लिया गया है। यदि आप जानना चाहते हैं कि यह निर्णय क्यों लिया गया, तो मुख्य कमिटर alexpott की इस प्रस्तुति को देखें।
Symfony 2 की पुस्तक पढ़ें और अपने Symfony ज्ञान को ताज़ा करें। यह Drupal को गहराई से समझने के लिए आवश्यक नहीं है, लेकिन Symfony को समझने से आप बेहतर Drupal और PHP डेवलपर बनेंगे। आप Symfony का ग्लॉसरी भी देख सकते हैं।
core/composer.lock देखें ताकि Symfony लाइब्रेरीज़ दिखाई दें। Drupal 8.6.15 से शुरू होकर इसमें ये Symfony और संबंधित लाइब्रेरीज़ शामिल हैं:
...
"symfony/class-loader": "~3.4.0",
"symfony/console": "~3.4.0",
"symfony/dependency-injection": "~3.4.26",
"symfony/event-dispatcher": "~3.4.0",
"symfony/http-foundation": "~3.4.26",
"symfony/http-kernel": "~3.4.14",
"symfony/routing": "~3.4.0",
"symfony/serializer": "~3.4.0",
"symfony/translation": "~3.4.0",
"symfony/validator": "~3.4.0",
"symfony/process": "~3.4.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/yaml": "~3.4.5",
"twig/twig": "^1.38.2",
"doctrine/common": "^2.5",
"doctrine/annotations": "^1.2",
...
एनोटेशन
Drupal 8 PHP एनोटेशन का उपयोग करता है — यानी @docblock टिप्पणियाँ जो आपके कोड में विशेष सिंटैक्स के साथ जोड़ी जाती हैं — ताकि प्लगइन्स का पता लगाया जा सके और निष्पादन योग्य कोड के लिए अतिरिक्त संदर्भ या मेटाडेटा प्रदान किया जा सके। एनोटेशन को Doctrine Annotation Parser (v1.6) द्वारा पढ़ा जाता है और फिर Drupal द्वारा उपयोग किए जाने वाले डेटा में परिवर्तित किया जाता है।
प्लगइन डिस्कवरी के लिए एनोटेशन का उपयोग के बारे में अधिक जानें।
Drupal 8 में सभी एनोटेशन प्रकारों की सूची देखें।
यह भी देखें: PHPDoc (विकिपीडिया)
प्लगइन्स
प्लगइन्स छोटे कार्यात्मक घटक प्रदान करते हैं जिन्हें आसानी से किसी अन्य प्लगइन से बदला जा सकता है। समान कार्य करने वाले प्लगइन्स एक ही प्रकार के माने जाते हैं। उदाहरण के लिए, “फ़ील्ड विजेट” एक प्लगइन प्रकार है, और प्रत्येक विजेट (जैसे टेक्स्ट फ़ील्ड, तारीख फ़ील्ड आदि) को प्लगइन के रूप में लागू किया जाता है।
Drupal 8 में प्लगइन API के बारे में और जानें।
सर्विसेज़
Drupal 8 में, एक सर्विस वह ऑब्जेक्ट है जिसे सर्विस कंटेनर द्वारा प्रबंधित किया जाता है। सर्विस की अवधारणा को कई बार उपयोग की जाने वाली कार्यक्षमता को अलग करने और उसे पुन: प्रयोज्य व प्रतिस्थापनीय बनाने के लिए पेश किया गया था। ये सर्विसेज़ डिपेंडेंसी इंजेक्शन सर्विस कंटेनर में रजिस्टर की जाती हैं।
यह भी देखें: Drupal Geeks के लिए सर्विस कंटेनर
अन्य संसाधन
Drupal 8 के साथ परिचित होने में मदद के लिए नीचे कुछ अतिरिक्त संसाधन दिए गए हैं: