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

កាលពីវគ្គមុន យើងខ្ញុំបានបង្ហាញលោកអ្នកអំពី ClassLoader និង Cache Components អំពីរបៀបនៃការតម្លើង និងរបៀបនៃការប្រើប្រាស់របស់ពួកគេ។ ចំពោះអត្ថបទនេះវិញ គឺយើងនឹងបង្ហាញលោកអ្នកអំពី CssSelector component វិញម្ដងតែវាក៏មិនខុសពីអត្ថបទមុនៗដែរ គឺរៀបរាប់អំពីការតម្លើងនិងការប្រើប្រាស់ដូចទៅនឹង component មុនៗដែរ។ CssSelector component នឹងធ្វើការបំលែង CSS selectors ទៅជា XPath expressions។

១) ការតម្លើង

អ្នកអាចតម្លើង component នេះបានតាមវិធី ២ផ្សេងគ្នាគឺ៖

បន្ទាប់មកទៀត ទាមទារអោយមាន vendor/autoload.php file ដើម្បីបើកនូវការ load ដោយស្វ័យប្រវត្តិនូវ mechanism ដែលបានផ្ដល់ដោយ Composer។ បើមិនដូចនេះទេ application របស់អ្នកនឹងមិនអាចមានលទ្ធភាពក្នុងការស្វែងរកនូវ classes នៃ Symfony component នេះបានទេ។

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

ក) ហេតុអ្វីបានជាត្រូវប្រើ CSS selectors?

នៅពេលដែលអ្នកកំពុងញែក HTML រឺក៏ XML ដោយមកទល់នឹងពេលនេះវិធីសាស្ត្រដែលពេញនិយមបំផុតនោះគឺ XPath។

កន្សោម XPath គឺមានលក្ខណៈបត់បែនដែលមិនគួរអោយជឿ ដូច្នេះគឺតែងតែមាននូវកន្សោម XPath ដែលនឹងស្វែងរកនូវធាតុដែលអ្នកត្រូវការ។ តែជាអកុសល ពួកគេអាចនឹងក្លាយទៅជាភាពស្មុគស្មាញយ៉ាងខ្លាំង ហើយចំពោះការរៀនសូត្រនឹងមានការចោទជាខ្លាំង។ សូម្បីតែដំណើរប្រតិបត្តិការទូទៅ (ដូចជាការស្វែងរកនូវធាតុជាមួយនឹង class ជាក់លាក់មួយ) អាចនឹងទាមទារអោយមានរយៈពេលយូរនិងពិបាកនូវការប្រើប្រាស់កន្សោម។

Developers មួយចំនួន ជាពិសេស web developers គឺមានលទ្ធភាពច្រើនក្នុងការប្រើប្រាស់ CSS selectors ដើម្បីស្វែងរកធាតុ។ ដោយធ្វើការបានយ៉ាងល្អក្នុង stylesheets នោះ CSS selectors គឺត្រូវបានប្រើនៅក្នុង JavaScript ជាមួយនឹង querySelectorAll() function និងនៅក្នុង JavaScript libraries ដ៏ពេញនិយមដូចជា jQuery, Prototype និង MooTools។

CSS selectors អាចមានការនិយមប្រើតិចជាង XPath ប៉ុន្តែងាយស្រួលសរសេរ អាន និងយល់ជាង ។ ចាប់តាំងពីពួកគេមិនសូវពេញនិយម ភាគច្រើនគឺ CSS selectors អាចនឹងធ្វើការបំលែងអោយមានតម្លៃស្មើរទៅនឹង XPath។ កន្សោម XPath មួយនេះអាចអោយពួកគេប្រើជាមួយនឹង function និង classes ដទៃទៀតដើម្បីស្វែងរកធាតុក្នុងឯកសារ (document)។

ខ) CssSelector Component

គោលបំណងតែមួយគត់របស់ component មួយនេះគឺដើម្បីបំលែង CSS selectors ដើម្បីសមមូលជាមួយនឹង XPath របស់គេ ដោយប្រើប្រាស់ toXPath()

ខាងក្រោមនេះគឺជាលទ្ធផងដែលនឹងត្រូវបង្ហាញ៖

អ្នកអាចប្រើកន្សោមនេះបានជាមួយ រឺសម្រាប់ឧទាហរណ៏ DOMXPath រឺក៏ SimpleXMLElement ក្នុងការស្វែងរកធាតុនៅក្នុង document។

គ) ដែនកំណត់នៃ CssSelector Component

CSS selectors មិនទាំងអស់នោះទេដែលអាចបំលែងទៅជា XPath equivalents។

ទាំងនេះគឺជា CSS selectors ជាច្រើនដែលធ្វើអោយមានន័យក្នុង context នៃ web-browser។

  • link-state selectors៖ :link , :visited , :target
  • selectors ដោយផ្អែកទៅលើសកម្មភាពរបស់អ្នកប្រើប្រាស់៖ :hover , :focus , :active
  • UI-state selectors៖ :invalid , :indeterminate (however, :enabled , :disabled , :checked និង :unchecked គឺអាចប្រើបាន)

Pseudo-elements (:before , :after , :first-line , first-letter) គឺមិន support ព្រោះពួកគេរើសយកផ្នែកនៃអត្ថបទជាជាងធាតុ។

Pseudo-classes ជាច្រើនដែលមិនទាន់ support៖

  • *:first-of-type , *:last-of-type , *:nth-of-type , :*nth-last-of-type , *:only-of-type ។ (វាទាំងនេះគឺធ្វើការជាមួយនឹងឈ្មោះនៃធាតុ ឧទាហរណ៏ដូចជា li:first-of-type) ប៉ុន្តែមិនមែនជាមួយ * ទេ។