តើអ្វីទៅដែលហៅថា Debugging​ នៅក្នុង Symfony3?

វិធីសាស្ត្រនៃការបង្កើនប្រសិទ្ធភាពសម្រាប់ការកាត់បន្ថយកំហុសក្នុង Development Environment របស់អ្នក

ពេលដែលអ្នកធ្វើការលើ Symfony project ក្នុង local machine អ្នកគួរតែប្រើនូវ dev environment (app_dev.php front controller)។ environment configuration នេះគឺបង្កើននូវប្រសិទ្ធភាពដែលមាន ២ធំៗដូចជា៖

ទី១គឺ អោយ developer រកឃើញនូវ មតិដែលត្រឹមត្រូវខណៈពេលណាដែលមានអ្វីខុសឆ្គង (web debug toolbar, nice exception pages, profiler, …)

ទី២គឺ អាចមានភាពស្រដៀងគ្នា ដូចជាអាចដូចទៅនឹង production environment បញ្ចៀសនូវបញ្ហាពេលដែលពង្រាយលើ project។

ក) ការបិទនូវ Bootstrap File និង Class Caching

ដើម្បីអោយ production environment អាចដំណើរការបានលឿន Symfony បង្កើត PHP files នៅក្នុង cache ក្នុង​ project ដែលផ្ទុកនូវ PHP classes សរុបទាំងអស់ដែល​ project អ្នកត្រូវការសម្រាប់ការស្នើរ។ តែទោះជាយ៉ាងណា លក្ខណៈបែបនេះអាចនឹងច្រលំទៅនឹង debugger របស់អ្នក ព្រោះ class ដូចគ្នាអាចនឹងស្ថិតនៅពីរកន្លែងផ្សេងគ្នា៖ class file ដើមនិង file ធំដែលសរុប classes ទាំងអស់។

រូបមន្តនេះបង្ហាញអ្នកពីរបៀបដែលអ្នកអាចបង្កើននូវ caching mechanism ដើម្បីធ្វើអោយវា មើលទៅស្អាតពេលដែលអ្នកត្រូវការ debug កូដដែលទាក់ទងនឹង Symfony classes។

app_dev.php front controller ធ្វើការ reads ដូចខាងក្រោម៖

ដើម្បីអោយ debugger របស់អ្នកងាយស្រួលក្នុងការធ្វើការ សូមបិទ loading នៃ PHP class caches ទាំងអស់ដោយយកចេញនូវ loadClassCache()

IDEs ខ្លះមិនចូលចិត្តត្រង់ថា classes មួយចំនួនគឺបានរក្សាទុកក្នុងទីតាំងផ្សេងៗគ្នា។ ដើម្បីជៀងវាងនូវបញ្ហា អ្នកអាចប្រាប់ទៅ IDE របស់អ្នកអោយ កុំខ្វល់ខ្វាយអំពី PHP cache files រឺក៏អ្នកអាចកែប្រែនូវ extension ដែលប្រើដោយ Symfony សម្រាប់ files ទាំងអស់នោះ៖

ខ) Debugging Commands ដែលពេញនិយម

ពេលបង្កើត application ដ៏ធំមួយ វាអាចនឹងពិបាកក្នុងការរក្សាទុកនូវ services ផ្សេងៗ routes និង translations។ តែសំណាងល្អ Symfony មាន commands មួយចំនួនដែលអាចជួយអ្នករកឃើញនិងស្វែងរកនូវព័ត៌មានទាំងនោះ។

debug:container

បង្ហាញនូវព័ត៌មានអំពីអត្ថបទនៃ Symfony container សម្រាប់ public services ទាំងអស់។ ដើម្បីស្វែងរកនូវ ឈ្មោះដែលត្រូវគ្នាបាន គឺត្រូវបន្ថែមឈ្មោះខាងចុងជា argument។

debug:config

បង្ហាញនូវ configure bundles ទាំងអស់ ដែលជា class និង alias របស់ពួកគេ។

debug:router

បង្ហាញនូវព័ត៌មានអំពីការ configure routes ទាំងអស់ក្នុង application ជា table ជាមួយឈ្មោះ, method, scheme, host និងទីតាំងសម្រាប់ route នីមួយៗ។

debug:translation <locale>

បង្ហាញ table នៃ translation key, domain, translation និង feedback translation សម្រាប់សារទាំងអស់ ប្រសិនបើ translations មានរួចហើយសម្រាប់ given locale។