nattapong99 / book

0 stars 0 forks source link

Part 3: Introduction to the Symfony Service Container #7

Open nattapong99 opened 6 years ago

nattapong99 commented 6 years ago

Introduction to the Symfony Service Container

เราได้พูดถึงแนวคิดโดยทั่วไปของ Dependency Injection ไปแล้ว ซึ่งสองบทความก่อนหน้านี้มีความสำคัญที่จะช่วยให้เข้าใจการทำงาน โดยในบทความนี้เราจะพูดถึงการใช้งาน service container ของ Symfony 2

Dependency Injection Container ใน Symfony 2 ถูกจัดการโดยคลาสที่ชื่อว่า sfServiceContainer ซึ่งเป็นคลาสที่มีคุณสมบัติพื้นฐานดังที่เราได้กล่าวมาแล้วในบทความก่อนหน้านี้

ใน Symfony จะบอกว่า service ก็คือ object ใด ๆ ที่ถูกจัดการโดย container จากตัวอย่าง Zend_Mail เรามี mailer service และ mail_transport service

01

โดยเราจะให้คลาส Container extend คลาส sfServiceContainer โค้ดจะเปลี่ยนแปลงไปดังรูป

02

นี่คือการเปลี่ยนแปลงหลัก ๆ ที่เราได้ทำ

ลองดูการใช้งานคลาส container หลังการปรับปรุงใหม่

03

04

05

06

07

08

การใช้คลาส sfServiceContainer จะมีประโยชน์มากเมื่อคุณมีจำนวน Service น้อย ๆ ที่ต้องจัดการ ถึงแม้ว่าคุณจะต้องจัดการงานเหล่านี้ด้วยตัวคุณเองก็ตาม รวมถึงยังเกิด duplicate code มากด้วย เราจึงต้องการวิธีที่ดีนี้ในการจัดการกับ services

นั้นเป็นเหตุผลว่าทำไม โดยส่วนใหญ่เราถึงไม่ใช้คลาส sfServiceContainer โดยตรง ถึงอย่างไรก็ตามสิ่งสำคัญคือต้องใช้เวลาเพื่อที่จะอธิบายมัน เนื่องจากมันเป็นหลักสำคัญของการใช้งาน dependency injection container ของ Symfony

ในบทความหน้า เราจะมาดูคลาส sfServiceContainerBuilder ซึ่งจะช่วยลดขึ้นตอนการกำหนด service

source