Singletons là một tin xấu.
- Họ đưa trạng thái toàn cầu vào một chương trình. Hầu hết các lập trình viên nên quen thuộc với lý do tại sao trạng thái toàn cầu là xấu.
- Họ giới thiệu sự kết hợp chặt chẽ giữa singleton và bất kỳ lớp nào sử dụng nó. Điều này có nghĩa là bạn không thể sử dụng lại các lớp được đề cập mà không sử dụng lại singleton.
- Họ làm cho việc kiểm tra đơn vị của các lớp phụ thuộc vào singleton có vấn đề vì bạn không thể dễ dàng thay thế singleton bằng một mô hình.
- Chúng khuyến khích một phong cách mã hóa trong đó các lớp cố gắng giải quyết các phần phụ thuộc của chính chúng. Điều này là không tốt vì nó có thể làm giảm sự rõ ràng về những phụ thuộc nào mà lớp có.
- PHP có Kiến trúc Chia sẻ Không có gì, có nghĩa là các tệp đơn trong PHP thực sự không phải là các tệp đơn lẻ, có thể có nhiều phiên bản tồn tại cùng một lúc (một phiên bản cho mỗi yêu cầu mở).
- Điều gì sẽ xảy ra nếu một ngày nào đó bạn đột nhiên phát hiện ra rằng bạn thực sự cần nhiều hơn một trong các tài nguyên được cung cấp bởi singleton? Đó là một tình huống phổ biến hơn bạn nghĩ
Tốt hơn hết bạn nên xem dependency-injection thay vào đó, vì nó giải quyết các vấn đề ở trên.