PHP Academy · पाठ

EventDispatcher: अलग-अलग रखी गई घटनाएँ

Symfony के EventDispatcher का उपयोग करके घटनाएँ डिस्पैच करें और सुनें

पाठ 3, कुल 4 में से13 चरण

EventDispatcher: अलग-अलग रखी गई घटनाएँ, CoddyKit पर PHP Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह PHP Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

EventDispatcher क्या है?

Symfony EventDispatcher पर्यवेक्षक पैटर्न लागू करता है। कोड घटनाएँ भेजता है और श्रोता उन पर प्रतिक्रिया देते हैं—डिस्पैचर को श्रोताओं के बारे में कुछ भी जानने की आवश्यकता नहीं होती।

इंस्टॉल करना

घटक को इंस्टॉल करें।

$ composer require symfony/event-dispatcher

घटना बनाना

घटना एक साधारण PHP क्लास होती है, जो अक्सर Event का विस्तार करती है (वैकल्पिक) और डेटा रखती है।

<?php
use Symfony\Contracts\EventDispatcher\Event;

class UserRegisteredEvent extends Event
{
    public const NAME = "user.registered";

    public function __construct(public readonly User $user) {}
}

श्रोता बनाना

श्रोता कोई ऐसा कॉल करने योग्य फ़ंक्शन या ऑब्जेक्ट होता है, जो किसी विशिष्ट घटना पर प्रतिक्रिया देता है।

<?php
class SendWelcomeEmailListener
{
    public function __invoke(UserRegisteredEvent $event): void
    {
        mail($event->user->email, "Welcome!", "Thanks for joining!");
    }
}

श्रोताओं को रजिस्टर करना

श्रोताओं को डिस्पैचर से जोड़ें।

<?php
use Symfony\Component\EventDispatcher\EventDispatcher;

$dispatcher = new EventDispatcher();
$dispatcher->addListener(
    UserRegisteredEvent::NAME,
    new SendWelcomeEmailListener()
);

घटना भेजना

घटना भेजें—सभी रजिस्टर किए गए श्रोताओं को प्राथमिकता क्रम में बुलाया जाता है।

<?php
$user = new User("alice@example.com");
$dispatcher->dispatch(new UserRegisteredEvent($user), UserRegisteredEvent::NAME);

श्रोता की प्राथमिकता

addListener() के तीसरे तर्क के रूप में प्राथमिकता वाला पूर्णांक पास करें। बड़ी संख्या पहले चलती है (डिफ़ॉल्ट: 0)।

<?php
$dispatcher->addListener("user.registered", $logListener, 10);   // runs first
$dispatcher->addListener("user.registered", $emailListener, 0);  // runs second

घटना सब्सक्राइबर

घटना सब्सक्राइबर ऐसी क्लास होती है, जो EventSubscriberInterface लागू करके अपने श्रोताओं को स्वयं रजिस्टर करती है।

<?php
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class UserSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array {
        return [
            UserRegisteredEvent::NAME => "onUserRegistered",
        ];
    }

    public function onUserRegistered(UserRegisteredEvent $event): void {
        // ...
    }
}

प्रसार रोकना

आगे के श्रोताओं को चलने से रोकने के लिए किसी श्रोता के अंदर $event->stopPropagation() कॉल करें।

Laravel में

Laravel की अपनी घटना प्रणाली है। event(new UserRegistered($user)) से घटना भेजें। श्रोताओं को EventServiceProvider में रजिस्टर करें या #[Listen] एट्रिब्यूट का उपयोग करें।

घटना-आधारित आर्किटेक्चर के लाभ

घटनाएँ घटकों को अलग रखती हैं: पंजीकरण सेवा को ईमेल सेवा इंपोर्ट करने की आवश्यकता नहीं होती। नए श्रोताओं को रजिस्टर करके लॉग दर्ज करने और विश्लेषण जैसी नई क्षमताएँ जोड़ी जा सकती हैं, बिना मौजूदा कोड में बदलाव किए।

सारांश

डेटा वाली घटना क्लास बनाएँ, addListener() से श्रोताओं को जोड़ें और $dispatcher->dispatch() से घटना भेजें। स्वयं रजिस्टर होने वाले श्रोताओं के समूहों के लिए सब्सक्राइबर का उपयोग करें।

त्वरित जाँच

आगे के श्रोताओं को चलने से कैसे रोकेंगे?

शुरुआत निःशुल्क

एआई शिक्षक के साथ PHP सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
49
पाठ
195

अक्सर पूछे जाने वाले प्रश्न

क्या “EventDispatcher: अलग-अलग रखी गई घटनाएँ” पाठ निःशुल्क है?

हाँ—“EventDispatcher: अलग-अलग रखी गई घटनाएँ” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और PHP Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“EventDispatcher: अलग-अलग रखी गई घटनाएँ” में मैं क्या सीखूँगा?

Symfony के EventDispatcher का उपयोग करके घटनाएँ डिस्पैच करें और सुनें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PHP Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या PHP Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर PHP Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“EventDispatcher: अलग-अलग रखी गई घटनाएँ” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस PHP Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर PHP Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. HttpFoundation: अनुरोध और प्रतिक्रिया
  2. DependencyInjection कंटेनर
  3. EventDispatcher: अलग-अलग रखी गई घटनाएँ
  4. Console घटक: CLI कमांड
← PHP Academy पर वापस जाएँ