Bắt đầu Nhanh Symfony DI (Dependency Injection) Hướng dẫn
Là Dependency Injection (DI)?
Dependency injection là một kỹ thuật cho phép cho các đối tượng lỏng trong một ứng dụng phần mềm. Nói chung nếu một đối tượng đòi hỏi phải truy cập các chức năng khác sẽ được khởi tạo nội bộ hàng đầu cho các hệ thống chặt chẽ. Thực hiện tiêm phụ thuộc, chúng ta tiêm các đối tượng cần thiết sẵn sàng sử dụng (đôi khi cũng được gọi để đảo ngược của kiểm soát - IOC). Lấy ví dụ sau đây:
<? Php lớp DecisionMaker { chức năng công cộng makeDecision (mảng $ tham số) { / / Cần các bộ chuyển đổi cơ sở dữ liệu $ Dp = new DecisionParameters (); $ ParameterScore = $ dp-> getScore (tham số); / * ... Quyết định logic của một số chi tiết ... * / trở lại ($ parameterScore> 50); } }
Đoạn mã này được chặt chẽ cùng với các đối tượng DecisionParameters. Viết lại một cách lỏng lẻo, chúng tôi muốn có một cái gì đó giống như ....
<? Php lớp DecisionMaker { private $ _dp; xây dựng chức năng công cộng __ (dp) { $ This-> _dp = $ dp; } chức năng công cộng makeDecision (mảng $ tham số) { $ ParameterScore = $ this-> _dp-> getScore (tham số); / * ... Quyết định logic của một số chi tiết ... * / trở lại ($ parameterScore> 50); } }
Trong khi đạt được những lợi ích của mã lỏng chúng tôi có thêm phức tạp như vậy mà mỗi một đối tượng được khởi tạo, chúng tôi cũng có để khởi tạo phụ thuộc của nó và vượt qua những trong quá. Ví dụ, điều này:
$ Sự lựa chọn = mới DecisionMaker (); echo $ lựa chọn> makeDecision (array ('nỗ lực' => 'thấp', 'trở lại' => 'cao'));
bây giờ trở thành:
$ Dp = new DecisionParameters (); $ Sự lựa chọn = new DecisionMaker (dp); echo $ lựa chọn> makeDecision (array ('nỗ lực' => 'thấp', 'trở lại' => 'cao'));
Tình trạng này trở nên đau đớn hơn khi số lượng phụ thuộc cho một lớp học được tăng lên, và điều gì sẽ xảy ra nếu các phụ thuộc mình có phụ thuộc? Điều này có thể khá nhanh chóng trở thành một cơn ác mộng hành chính đối tượng! Nhập container tiêm phụ thuộc (hoặc khung) ...
Tiếp tục đọc "nhanh Symfony bắt đầu DI (Dependency Injection) Hướng dẫn '»

















































