ស្វែងយល់អំពី ClassLoader Component នៅក្នុង Symfony3

ដើម្បីធ្វើការ load class និងចាប់យកនូវទីតាំងរបស់ពួកគេដើម្បីធ្វើដំណើរការបាន តើអ្នកចាំបាច់ត្រូវប្រើអ្វីទៅ? នៅក្នុង Symfony មាន component មួយដែលផ្ដល់នូវ tools ដើម្បី load classes និងចាប់យកទីតាំងរបស់ classes សម្រាប់ដំណើរការដោយស្វ័យប្រវត្តិ ហើយវាមានឈ្មោះថា ClassLoader។ នៅក្នុងចំណុចនេះ យើងខ្ញុំនឹងនាំលោកអ្នកអោយជ្រាបនូវការប្រើប្រាស់និងការតម្លើង ClassLoader Component មួយនេះ៖

១) ការប្រើប្រាស់

នៅពេលណាដែរអ្នកព្រាងរឺក៏យោង​(reference class) ដែលមិនទាន់បានទាមទាររឺក៏បញ្ចូលនៅឡើយនោះគឺ PHP ប្រើនូវ autoloading mechanism ដើម្បីធ្វើការតំណាងក្នុងការ load នៃ file ដែលធ្វើការកំណត់នូវ class។ Symfony ផ្ដល់នូវ autoloaders ចំនួន៣ ដែលជាអ្នកមានសិទ្ធធ្វើការ load នូវ classes របស់អ្នក៖

  • PSR-0 Class Loader៖ loads classes ដែលស្របតាម​ឈ្មោះ PSR-0 class ស្តង់ដារ។
  • PSR-4 Class Loader៖ loads classes ដែលស្របតាមឈ្មោះ PSR-4 class ស្តង់ដារ។
  • MapClassLoader៖ loads classes ដោយប្រើប្រាស់នូវ static map ពីឈ្មោះ class ទៅកាន់ទីតាំងនៃ file។

បន្ថែមពីនេះ Symfony ClassLoader component ភ្ជាប់មកជាមួយនូវ wrapper class ដែលធ្វើអោយវាអាចទៅរួចក្នុងការចាប់យកលទ្ធផលនៃ class loader

ពេលដែលប្រើប្រាស់ Debug component អ្នកក៏អាចប្រើនូវ DebugClassLoader ពិសេសមួយដែលងាយស្រួលក្នុង debug ដោយបោះចោលនូវករណីលើកលែងដ៏ពេញនិយមណៅពេលដែល class​ នឹងមិនអាចរកឃើញដោយ​ class loader។

២) ការតម្លើង

អ្នកអាចតម្លើងបានវិធី២របៀបផ្សេងពីគ្នា៖

បន្ទាប់មកទៀតគឺទាមទារអោយ​ vendor/autoload file ដើម្បីបើកនូវ​ autoloading​ mechanism ដែលផ្ដល់នូវ Composer។ បើមិនដូច្នេះទេ application របស់អ្នកនឹងមិនអាចមានសិទ្ធក្នុងការស្វែករកនូវ classes នៃ Symfony component មួយនេះ។

ប្រសិនបើលោកអ្នកមានបំណងចង់រៀនបន្ថែមទៀត សូមចុងទៅលើតំណភ្ជាប់ទាំងអស់នេះ៖