ស្វែងយល់អំពី Debug Component នៅក្នុង Symfony3
នៅពេលដែលអ្នកសរសេរកូដរួច និងបន្ត run កូដរបស់អ្នកអោយមានដំណើរការនិងចេញជារូបរាងនោះ តើអ្នកប្រើប្រាស់នូវវិធីសាស្ត្រ រឺក៏ tool អ្វីខ្លះដើម្បី debug មើលកូដរបស់អ្នកនៅលើ web browser ? នៅក្នុងអត្ថបទមួយនេះ គឺចង់ណែនាំលោកអ្នកអោយស្គាល់អំពី Debug Component មួយដែលផ្ដល់នូវ tool សម្រាប់ធ្វើការ debug កូដ PHP ។
ជាដំបូងដើម្បីប្រើប្រាស់នូវ Debug Component បានអ្នកត្រូវធ្វើការតម្លើង component ជាមុនសិន តាមការណែនាំដូចខាងក្រោម៖
១) ការតម្លើង
អ្នកអាចតម្លើង debug component បានតាមច្រើនរបៀបផ្សេងគ្នាដូចជា៖
ទី១៖ តម្លើងវាតាមរយៈ composer (symfony/debug នៅលើ packagist)
ទី២៖ ប្រើប្រាស់នូវ Git repository ជាផ្លូវការ (https://github.com/symfony/debug)
បន្ទាប់មកទៀតគឺ វាទាមទារអោយមាននូវ vendor/autoload.php file ដើម្បីធ្វើការបើកនូវ autoloading mechanism ដែលផ្ដល់ដោយ Composer បើមិនដូច្នេះទេ application របស់អ្នកនឹងមិនអាចស្វែងរកនូវ Classes នៃ Symfony component នេះបានឡើយ។
២) ការប្រើប្រាស់
Debug component ផ្ដល់នូវ tools ជាច្រើនដើម្បីជួយអ្នកក្នុងការ debug នូវកូដ PHP។ ដើម្បីធ្វើការ enable Debug component បាន សូមធ្វើដូចរូបភាពខាងក្រោម៖
enable() method ធ្វើការចុះឈ្មោះនូវ error handler និង exception handler និង special class loader ។
សូមធ្វើការអាននូវអត្ថបទខាងក្រោមបន្តទៀតដើម្បីស្វែងយល់លម្អិតអំពី error handler, exception handler និង special class loader បន្ថែមទៀត។
ក) ការ enable error handler
ErrorHandler class catches នូវ PHP errors ហើយនិងបម្លែង errors ទាំងនោះទៅជា exceptions (នៃ class ErrorException រឺក៏ FatalErrorException សម្រាប់ fatal PHP errors)៖
ខ) ការ enable exception handler
ExceptionHandler class catches uncaught PHP exceptions ហើយបន្លែងវាទៅជា PHP response មួយ។ វាពេញនិយមណាស់ក្នុងការ debug mode ដើម្បីជំនួសនូវលទ្ធផលនៃ default PHP/XDebug ជាមួយនឹងអ្វីដែលពេញនិយមក្នុងការប្រើប្រាស់ផ្សេងទៀត៖
គ) ការ Debug Class Loader
DebugClassLoader ព្យាយាមបោះនូវ exceptions ដែលមានប្រយោជន៏ជាច្រើនទៀត នាពេលដែល autoloaders ដែលបានចុះឈ្មោះរួចរាល់ហើយនោះមិនបានរកឃើញនូវ class។ Autoloaders ទាំងអស់គឺ implement នូវ findFile() method ដែលត្រូវបានជំនួសជាមួយនឹង DebugClassLoader wrapper។
ការប្រើប្រាស់នូវ DebugClassLoader គឺពិតជាងាយស្រួលដូចទៅនឹងការហៅនូវ static enable() method របស់វា។