Tôi đang trải qua những gì tôi tin là một vấn đề phụ thuộc vòng tròn với ứng dụng PHP của tôi. Vui lòng cho tôi biết nếu điều này không chính xác. Đây là tình huống:Sự cố phụ thuộc vòng tròn có thể xảy ra với ứng dụng PHP
Hai lớp học, LogManager và DBSession.
DBSession được sử dụng để tương tác với cơ sở dữ liệu và LogManager được sử dụng để đăng nhập vào tệp. Cả hai đều được sử dụng rộng rãi trong ứng dụng của tôi. Khi bạn tạo một thể hiện của DBSession, bạn phải cung cấp cho nó một cá thể của LogManager thông qua một tham số hàm tạo. Điều này bởi vì DBSession đôi khi sẽ ghi thông tin vào một tệp và sẽ sử dụng cá thể LogManager để thực hiện việc này.
Bây giờ, tôi muốn mở rộng LogManager để nó cũng có thể đăng nhập vào một bảng cơ sở dữ liệu, chứ không phải là một tệp văn bản. Đương nhiên, sở thích của tôi là sử dụng lại các lớp hiện có, nhưng tôi sớm nhận ra điều này mang lại một tình huống thú vị.
DBSession đã yêu cầu phiên bản của LogManager để xây dựng. Nếu tôi muốn sử dụng lại lớp DBSession trong LogManager, nó sẽ yêu cầu một thể hiện của DBSession. Làm thế nào tôi có thể đáp ứng cả hai nhu cầu? Rõ ràng, một cái gì đó phải sai với cách tiếp cận của tôi.
Bạn đề nghị tôi sửa lỗi này như thế nào?
Xin cảm ơn trước, các bạn.
$ logManager = new LogManager(); $ dbSession = DbSession mới ($ logManager); $ logManager-> add (new FileLog ($ filename)); $ logManager-> thêm (DBLog mới ($ dbSession)); – micahwittman
Nó không nhất quán trong các tên lớp .. –
@Owen: cảm ơn bạn đã chỉnh sửa! –