DependencyInjection कंटेनर
Symfony DI कंटेनर से सेवाएँ पंजीकृत करें और निर्भरताएँ जोड़ें
DependencyInjection कंटेनर, CoddyKit पर PHP Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह PHP Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Dependency Injection क्या है?
Dependency Injection (DI) एक पैटर्न है, जिसमें कोई क्लास अपनी निर्भरताएँ स्वयं आंतरिक रूप से बनाने के बजाय बाहर से प्राप्त करती है—इससे कोड का परीक्षण करना आसान होता है और उसका युग्मन ढीला रहता है।
Symfony DI घटक
Symfony का symfony/dependency-injection घटक एक शक्तिशाली IoC कंटेनर उपलब्ध कराता है, जो सेवा परिभाषाओं को स्वतः जोड़, कॉन्फ़िगर और कैश कर सकता है।
$ composer require symfony/dependency-injectionकंटेनर बनाना
एक कंटेनर बनाएँ और सेवाएँ रजिस्टर करें।
<?php
use Symfony\Component\DependencyInjection\ContainerBuilder;
$container = new ContainerBuilder();
// Register a service:
$container->register("logger", \App\Logger::class);कंस्ट्रक्टर तर्क जोड़ना
सेवा परिभाषाओं में कंस्ट्रक्टर तर्क पास करें।
<?php
$container->register("mailer", \App\Mailer::class)
->addArgument("smtp.example.com")
->addArgument(587);सेवा संदर्भ
Reference का उपयोग करके एक सेवा को दूसरी सेवा में इंजेक्ट करें।
<?php
use Symfony\Component\DependencyInjection\Reference;
$container->register("email_service", \App\EmailService::class)
->addArgument(new Reference("mailer"))
->addArgument(new Reference("logger"));सेवा प्राप्त करना
कंटेनर से कोई सेवा प्राप्त करें। निर्भरताएँ अपने आप हल हो जाती हैं।
<?php
$emailService = $container->get("email_service");
$emailService->send("user@example.com", "Welcome!");स्वचालित वायरिंग
स्वचालित वायरिंग सक्षम होने पर, कंटेनर प्रकार संकेतों की जाँच करता है और मेल खाने वाली सेवाओं को अपने आप इंजेक्ट करता है।
<?php
$container->register(EmailService::class)
->setAutowired(true);
// Constructor is: public function __construct(Mailer $mailer, Logger $logger)पैरामीटर
कॉन्फ़िगरेशन मानों को कंटेनर पैरामीटर के रूप में संग्रहित करें।
<?php
$container->setParameter("mailer.host", "smtp.example.com");
$container->setParameter("mailer.port", 587);
// Reference in service definition:
$container->register("mailer", Mailer::class)
->addArgument("%mailer.host%")
->addArgument("%mailer.port%");YAML कॉन्फ़िगरेशन
सेवाओं को YAML में परिभाषित करें (symfony/config और symfony/yaml आवश्यक हैं)।
# services.yaml
services:
App\Mailer:
arguments:
- "%mailer.host%"
- "%mailer.port%"कंटेनर संकलित करना
प्रदर्शन बेहतर करने के लिए कंटेनर को संकलित करें। इससे परिभाषाओं का सत्यापन होता है और सेवा ग्राफ़ बेहतर ढंग से व्यवस्थित होता है।
<?php
$container->compile();
// Dump to PHP cache file:
$dumper = new PhpDumper($container);
file_put_contents("CachedContainer.php", $dumper->dump());साझा और असाझा सेवाएँ
डिफ़ॉल्ट रूप से सेवाएँ साझा होती हैं (सिंगलटन)। सेवा प्राप्त करने पर हर बार नया इंस्टेंस पाने के लिए shared(false) सेट करें।
सारांश
Symfony DI कंटेनर सेवाओं को रजिस्टर, जोड़ और हल करता है। सुविधा के लिए स्वचालित वायरिंग, कॉन्फ़िगरेशन के लिए पैरामीटर और प्रदर्शन के लिए प्रोडक्शन में संकलित कंटेनर का उपयोग करें।
त्वरित जाँच
Symfony DI कंटेनर में स्वचालित वायरिंग क्या करती है?
एआई शिक्षक के साथ PHP सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 49
- पाठ
- 195
अक्सर पूछे जाने वाले प्रश्न
क्या “DependencyInjection कंटेनर” पाठ निःशुल्क है?
हाँ—“DependencyInjection कंटेनर” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और PHP Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“DependencyInjection कंटेनर” में मैं क्या सीखूँगा?
Symfony DI कंटेनर से सेवाएँ पंजीकृत करें और निर्भरताएँ जोड़ें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PHP Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या PHP Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर PHP Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“DependencyInjection कंटेनर” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस PHP Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर PHP Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- HttpFoundation: अनुरोध और प्रतिक्रिया
- DependencyInjection कंटेनर
- EventDispatcher: अलग-अलग रखी गई घटनाएँ
- Console घटक: CLI कमांड