နိဒါန်း
Event Manager သည် Phalcon မူဘောင်တွင်အဓိကအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ၎င်းသည် developer များက application process မှစီးပွားရေးယုတ္တိဗေဒကို develouple စီးပွားရေးဆိုင်ရာယုတ္တိဗေဒကိုထိန်းချုပ်ရန်နှင့် Code ၏ထိန်းသိမ်းမှုနှင့်ပြောင်းလွယ်ပြင်လွယ်များကိုတိုးတက်စေသည်။ ဤဆောင်းပါးသည် Phalcon မူဘောင်တွင်ဥပမာအားဖြင့်ဖြစ်ရပ်မန်နေဂျာကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
ဖြစ်ရပ်မန်နေဂျာဖန်တီးပါ
Phalcon တွင်ဖြစ်ရပ်မန်နေဂျာဖြစ်ရပ်များကိုဖန်တီးနိုင်သည်။
$eventsManager = new Phalcon\Events\Manager();
Bind ပွဲနားထောင်သူ
ဖြစ်ရပ်မန်နေဂျာမသုံးမီ, သင်ဖြစ်ရပ်အစပျိုးလိုက်သည့်အခါ, နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
//တစ်ခုတည်းဖြစ်ရပ်ကိုချည်နှောင်
$eventsManager->attach(
'eventName', //အဖြစ်အပျက်အမည်
function($event, $component, $data) {
//Event processing ယုတ္တိဗေဒ
}
);
//မျိုးစုံဖြစ်ရပ်များချည်နှောင်
$eventTypes = ['event1', 'event2', 'event3'];
foreach ($eventTypes as $eventType) {
$eventsManager->attach(
$eventType,
function($event, $component, $data) {
//Event processing ယုတ္တိဗေဒ
}
);
}
ဖြစ်ရပ်ဖြစ်ရပ်
အောက်ပါကုဒ်များမှတဆင့်ဖြစ်ပေါ်လာသောဖြစ်ရပ်များကိုပြီးမြောက်နိုင်သည်။
$eventsManager->fire(
'eventName',
$component, //ဖြစ်ရပ်အစပျိုးသောအစိတ်အပိုင်း
$data //传递给Event processing ယုတ္တိဗေဒ的数据
);
မော်ဒယ်များတွင်ဖြစ်ရပ်မန်နေဂျာများကိုအသုံးပြုခြင်း
အောက်ဖော်ပြပါဖြစ်ရပ်မန်နေဂျာကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြရန်အောက်ပါ "အသုံးပြုသူ" မော်ဒယ်ကိုယူသည်။ အသုံးပြုသူကိုအောင်မြင်စွာဖန်တီးနိုင်သည့်အခါထိုအဖြစ်အပျက်မှတစ်ဆင့်ကြိုဆိုသည့်အီးမေးလ်ကိုပေးပို့ပါ။
use Phalcon\Mvc\Model;
class User extends Model
{
public function afterCreate()
{
//အသုံးပြုသူများထံကြိုဆိုအီးမေးလ်ပို့ပါ
$userEmail = $this->email;
//အီးမေးလ်ယုတ္တိဗေဒပို့ပါ...
}
}
ထိန်းချုပ်သူများအတွက်ဖြစ်ရပ်များကို binding နှင့်အစပျိုးခြင်း
ဖြစ်ရပ်မှန်နားထောင်သူတစ် ဦး အား Controller တွင်ချည်နှောင်ခြင်းနှင့်အသုံးပြုသူတစ် ဦး မှတ်ပုံတင်သည့်အခါဖြစ်ရပ်ကိုအစပျိုးခြင်း -
class UserController extends Phalcon\Mvc\Controller
{
public function registerAction()
{
//မှတ်ပုံတင်ခြင်းယုတ္တိဗေဒ...
$user = new User();
$user->email = 'abc@example.com';
$user->save();
//ဖြစ်ရပ်ဖြစ်ရပ်
$this->eventsManager->fire(
'user:afterCreate',
$user,
[
'data1' => $data1,
'data2' => $data2,
//...
]
);
}
}
application entry ကိုမှာဖြစ်ရပ်မန်နေဂျာကိုတွဲဖက်
လျှောက်လွှာတင်ထားသောဖိုင်တွင်ဖြစ်ရပ်မန်နေဂျာကိုလျှောက်လွှာသို့ချည်နှောင်ပါ။
$eventsManager = new Phalcon\Events\Manager();
//shared ဝန်ဆောင်မှုအဖြစ်မှတ်ပုံတင်ပါ
$di->setShared('eventsManager', $eventsManager);
//Controller အတွက်ဖြစ်ရပ်မန်နေဂျာရယူပါ
$this->eventsManager = $this->getEventsManager();
အကျဉ်းချုပ်
အထက်ပါအဆင့်များမှတစ်ဆင့်သုံးစွဲသူသည်အောင်မြင်စွာမှတ်ပုံတင်ပြီးနောက်တွင် Associet Manager တွင် 0 ယ်ယူသည့်အီးမေးလ်ပို့ခြင်းကဲ့သို့သောစီးပွားရေးယုတ္တိဗေဒလုပ်ငန်းစဉ်ကိုအကောင်အထည်ဖော်ရန် "User user" မော်ဒယ်တွင် "user user" မော်ဒယ်တွင် "Assocreate" နည်းလမ်းကို "Asscreate" နည်းလမ်းကိုအလိုအလျောက်ခေါ်ဆိုနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်များစွာသောဖြစ်ရပ်များကိုရှုပ်ထွေးသောစီးပွားရေးလုပ်ငန်းစဉ်စီမံခန့်ခွဲမှုရရှိရန်လိုအပ်ချက်များနှင့်အညီခညျြနှောငျနိုင်သည်။ ဖြစ်ရပ်မန်နေဂျာသည်ကုဒ်ဖွဲ့စည်းပုံကိုရိုးရှင်းရုံသာမကလျှောက်လွှာ၏ထိန်းသိမ်းနိုင်မှုနှင့်ပမာဏကိုလည်းတိုးတက်စေသည်။