Mục đích của Singleton là giới hạn các phiên bản đối tượng thành một và cung cấp quyền truy cập toàn cầu.
Cả hai đều là những thứ bạn không muốn hoặc không cần.
Giới hạn phiên bản của bạn trong một phiên bản là điều khá vô nghĩa trong PHP khi hạn chế này chỉ áp dụng cho các phiên bản trong hiện tại lời yêu cầu. Nếu hai yêu cầu truy cập trang web tiểu blog của bạn cùng một lúc, sẽ vẫn có một trường hợp cho mỗi yêu cầu. Nếu bạn muốn đảm bảo chỉ có một phiên bản duy nhất, chỉ cần không khởi tạo một phiên bản thứ hai.
Truy cập toàn cầu cũng không phải là điều bạn muốn, bởi vì nó phá vỡ tính đóng gói. Nếu bạn cần một phiên bản nhất định bên trong các đối tượng của mình, hãy chuyển nó vào qua chèn phụ thuộc . Đó là sạch sẽ và có thể bảo trì. Nó có thêm lợi ích là cho phép bạn dễ dàng trao đổi các phụ thuộc với các triển khai khác, chẳng hạn như các lớp giả cho bài kiểm tra đơn vị của bạn .
Ngay cả Erich Gamma , một trong những người phát minh ra mô hình Singleton, đặt câu hỏi về mô hình này ngày nay:
Tốt nhất bạn nên tránh các Singleton.