កំឡុងពេលដែលដំណើរការនូវ Symfony application, ព្រឹត្តិការណ៏ជាច្រើនបានកើតឡើង។ Application របស់អ្នកអាចដឹងអំពីព្រឹត្តិការណ៏ទាំងអស់នោះបាននិងធ្វើការទទួលខុសត្រូវលើពួកគេដោយដំណើរការនូវកូដផ្សេងទៀត។
ព្រឹត្តិការណ៏ខាងក្នុងបានផ្ដល់ដោយ Symfony ដោយខ្លួនវាផ្ទាល់គឺកំណត់នៅក្នុង KernelEvents class ។ ភាគី bundles និង libraries ក៏បានកើនឡើងនូវ ព្រឹត្តិការណ៏ ហើយ application របស់អ្នកផ្ទាល់អាចនឹងកើនឡើងនូវ custom events ជាលំដាប់ផងដែរ។
ឧទាហរណ៏ទាំងអស់បានបង្ហាញនៅក្នុងអត្ថបទដែលប្រើប្រាស់ព្រឹត្តិការណ៏ដូចគ្នានឹង KernelEvents::EXCEPTION សម្រាប់គោលបំនងដែលមានភាពស្ថិតស្ថេរ។ នៅក្នុង application របស់អ្នកផ្ទាល់ អ្នកអាចប្រើ event ផ្សេងទៀតនិង even ដែលបញ្ចូលគ្នាដែលស្ថិតក្នុងនាមជា subscriber ដូចគ្នា។
១ ការបង្កើត Event Listener
ខាងក្រោមនេះជាវិធីនៃការបង្កើតនិងចុះឈ្មោះនូវ event ទៅក្នុង event listener ៖
ពេលនេះ class នេះបានបង្កើតរួចរាល់ហើយ អ្នកគ្រាន់តែចុះឈ្មោះវាទៅជា service និង notify Symfony ដែលវាគឺជា “listener” នៅលើ kernel.exception event ដោយប្រើប្រាស់ “tag” ។
២ ការបង្កើត Event Subscriber
វិធីសាស្ត្រផ្សេងទៀតក្នុងការ listen នូវ event គឺតាមរយៈ event subscriber គឺ class ណាមួយដែលកំណត់នូវ method មួយរឺច្រើនដែល listen ទៅកាន់ events មួយរឺច្រើន។ ភាពខុសគ្នាជាសំខាន់នៃ event listeners គឺ subscriber មួយនោះគឺតែងតែដឹងថាតើ events ណាមួយដែលនឹងធ្វើការ listening ។
នៅក្នុង subscriber គឺ methods ផ្សេងៗគ្នាអាច listen ទៅកាន់ event តែមួយបាន។ នៅគ្រានេះ methods ណាមួយដែលធ្វើដំណើរការ គឺកំណត់ដោយ priority parameter នៃ method នីមួយៗ ។ ឧទាហរណ៏ខាងក្រោមនេះបង្ហាញអំពី event subscriber ដែលកំណត់ methods មួយចំនួនដែល listen ទៅកាន់ kernel.exception event ដូចគ្នា។
ពេលនេះអ្នកគ្រាន់តែចុះឈ្មោះ class ទៅជា service និងបន្ថែម kernel.event_subscriber tag ដើម្បីប្រាប់ទៅកាន់ Symfony ដែលនេះគឺជា event subscriber៖
៣ ការស្នើរ Events និងឆែកមើលប្រភេទ
Single page អាចធ្វើការស្នើរបានច្រើនលើក ហើយសម្រាប់ core Symfony events អ្នកប្រហែលជាត្រូវការឆែកមើលថាតើ ប្រសិនបើ event គឺសម្រាប់ “master” request រឺក៏ “sub request”៖
រឿងមួយចំនួនដូចជាការឆែកមើលព័ត៌មាននៅលើ real request ប្រហែលជាមិនត្រូវការធ្វើអោយរួចរាល់នៅលើ sub-request listeners ទេ។
៤ Listeners រឺក៏ Subscribers
Listeners និង Subscriber អាចនឹងប្រើក្នុង application ដែលមិនច្បាស់លាស់តែមួយបាន។ ការសម្រេចចិត្តប្រើនូវអ្វីផ្សេងក្រៅពីវាគឺអាចមានបញ្ហាផ្ទាល់ខ្លួនខ្លះ។ តែទោះជាយ៉ាងណាវាក៏មានគុណសម្បត្តិខ្លះផងដែរ៖
ទី១៖ Subscribers គឺងាយស្រួលប្រើបានម្ដងទៀត ព្រោះចំណេះដឹងនៃ events គឺរក្សាទុកក្នុង class ច្រើនជាងនៅក្នុង service definition ។ នេះគឺជាមូលហេតុដែល Symfony ប្រើប្រាស់ subscribers នៅខាងក្នុង។
ទី២៖ Listeners គឺមានភាពបត់បែន ព្រោះ bundles អាចបើករឺបិទបានដោយផ្អែកទៅលើ configuration value ខ្លះផងដែរ។
៥ ការ Debug Event Listeners
អ្នកអាចស្វែងរកនូវ listeners ដែលចុះឈ្មោះក្នុង event dispatcher ប្រើប្រាស់នូវ console ។ ដើម្បីបង្ហាញនូវ events ទាំងអស់នោះ និង listeners របស់វាគឺប្រើប្រាស់នូវ command ដូចខាងក្រោម.៖
អ្នកអាចទទួលបាននូវ listeners ដែលចុះឈ្មោះរួចរាល់សម្រាប់ event ដែលជាក់លាក់ ដោយបញ្ជាក់ឈ្មោះរបស់វា៖