इवेंट इवेंट हैंडलिंग
webman/event
एक सुगम इवेंट मैकेनिज़्म प्रदान करता है, जो कोड छेदना बिना कुछ बिजनेस लॉजिक निष्पादित करने की क्षमता प्रदान करता है, व्यापार मॉड्यूल के बीच छेद निष्पादित करने की क्षमता प्रदान करता है। एक सामान्य स्थिति का उदाहरण है जैसे कि एक नए उपयोगकर्ता पंजीकरण सफलतापूर्वक होता है, बस एक कस्टम इवेंट जैसे user.register
प्रकार का प्रकाशित करने पर, हर एक मॉड्यूल ताकता है कि प्रेरित इवेंट को निष्पादित करने के लिए आवश्यक व्यवसायिक लॉजिक को निष्पादित करे।
स्थापना
composer require webman/event
इवेंट पर सदस्यता
इवेंट पर सदस्यता की स्थापना फ़ाइल config/event.php
के माध्यम से होती है
<?php
return [
'user.register' => [
[app\event\User::class, 'register'],
// ...अन्य परिणाम संसाधित कार्य...
],
'user.logout' => [
[app\event\User::class, 'logout'],
// ...अन्य परिणाम संसाधित कार्य...
]
];
स्पष्टीकरण:
user.register
user.logout
आदि इवेंट नाम हैं, स्ट्रिंग प्रकार है, सुझाव दिया गया है कि शब्दों को लोअरकेस में रखा जाए और डॉट (.
) से अलग किया जाए- एक इवेंट कई इवेंट हैंडलिंग कार्यों के लिए संबंधित हो सकता है, कॉलिंग के अनुसार कॉन्फ़िगरेशन का अनुरोध किया जाता है
इवेंट हैंडलिंग करने वाले फ़ंक्शन
इवेंट हैंडलिंग फ़ंक्शन कोई भी क्लास मेथड, फ़ंक्शन, बंद फ़ंक्शन आदि हो सकते हैं।
उदाहरण के तौर पर इवेंट हैंडलिंग क्लास app/event/User.php
को बनाएं (डिरेक्टरी मौजूद नहीं हो तो कृपया स्वयं बनाएं)
<?php
namespace app\event;
class User
{
function register($user)
{
var_export($user);
}
function logout($user)
{
var_export($user);
}
}
इवेंट प्रकाशित करना
Event::emit($event_name, $data);
का उपयोग करके इवेंट प्रकाशित करें, उदाहरण के लिए
<?php
namespace app\controller;
use support\Request;
use Webman\Event\Event;
class User
{
public function register(Request $request)
{
$user = [
'name' => 'webman',
'age' => 2
];
Event::emit('user.register', $user);
}
}
सूचना
Event::emit($event_name, $data);
पैरामीटर$data
किसी भी डेटा हो सकता है, जैसे कि एरे, क्लास इंस्टेंस, स्ट्रिंग आदि
वाइल्डकार्ड इवेंट सुनना
वाइल्डकार्ड प्राप्तकर्ता सुनना आपको एक ही सुनने वाले पर अन्याय इवेंट का संबद्ध करने की अनुमति देता है, उदाहरण के लिए config/event.php
में सेट करें
<?php
return [
'user.*' => [
[app\event\User::class, 'deal']
],
];
हम event_data
के द्वारा इवेंट हैंडलिंग फ़ंक्शन दूसरे पैरामीटर $event_data
को प्राप्त कर सकते हैं
<?php
namespace app\event;
class User
{
function deal($user, $event_name)
{
echo $event_name; // विशिष्ट इवेंट नाम, जैसे कि user.register user.logout आदि
var_export($user);
}
}
इवेंट प्रकार को रोकना
जब हम इवेंट हैंडलिंग फ़ंक्शन में false
लौटाते हैं, तो ऐसा इवेंट संपादक पर काम करना बंद हो जाएगा
बंद फ़ंक्शन से इवेंट हैंडलिंग
इवेंट हैंडलिंग फ़ंक्शन क्लास मेथड हो सकती है, यहां की तौर पर
<?php
return [
'user.login' => [
function($user){
var_dump($user);
}
]
];
इवेंट और सुनने वाले को देखें
php webman event:list
कमांड का प्रयोग करके परियोजना में संपूर्ण इवेंट और सुनने वाले को देखें
ध्यान देने योग्य बिंदु
इवेंट इवेंट हैंडलिंग वास्तव में असिंक्रोनिज़ नहीं होती है, इवेंट सुंदर व्यापार को नहीं संभालने के लिए उपयुक्त नहीं होती है, धीमे व्यापार को संदेश कतरीनी सुनने के लिए उपयोग करना चाहिए, जैसे कि webman/redis-queue