ស្វែងយល់អំពី 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។
២) ការតម្លើង
អ្នកអាចតម្លើងបានវិធី២របៀបផ្សេងពីគ្នា៖
- តម្លើងវាតាមរយៈ Composer (symfony/class-loader នៅលើ Packagist)
- ប្រើប្រាស់នូវ Git repository ផ្លូវការ (https://github.com/symfony/class-loader)
បន្ទាប់មកទៀតគឺទាមទារអោយ vendor/autoload file ដើម្បីបើកនូវ autoloading mechanism ដែលផ្ដល់នូវ Composer។ បើមិនដូច្នេះទេ application របស់អ្នកនឹងមិនអាចមានសិទ្ធក្នុងការស្វែករកនូវ classes នៃ Symfony component មួយនេះ។
ប្រសិនបើលោកអ្នកមានបំណងចង់រៀនបន្ថែមទៀត សូមចុងទៅលើតំណភ្ជាប់ទាំងអស់នេះ៖
- The PSR-0 Class Loader
- Cache a Class Loader
- The Class Map Generator
- Debugging a Class Loader
- MapClassLoader
- The PSR-4 Class Loader