PHP tekil kullanma

2 Cevap php

Ben bir sınıf birkaç Yöntemleri, oluşturulan bir DB Singleton kullanmak istiyorum. Her Yöntem ayrı Singleton Instantiate, ya da __ yapıcısı aracılığıyla Instantiate () ve her bir yöntemde bir değişken erişim onu ​​daha uygun?

Teşekkürler.

2 Cevap

O bir tek dikkate alınarak, sonuç aynı olacaktır: orada DB nesnenin yalnızca bir örneği olacaktır ve her zaman aynı olacak.

Yani, her iki çözümler işe ve aynı sonucu üretecek; DB sınıfı her sınıfın bir örneği oluşturulur süre kullanıldığı takdirde, en az, - tabii ve, performans fark muhtemelen önemsiz olacaktır.


Still, going with the solution of getting the singleton instance in the constructor and using a class variable in the other methods has an advantage : your methods will not depend on this singleton, but only on a class variable...

... Hangi bunu bir gün kullanmak istiyorsanız Dependency Injection (you'll only have to modify your __construct yöntemi değil, sınıfın her yöntemi) çok daha kolay olacağı anlamına gelir - örneğin, için "Mock" DB sınıfı, otomatik test amaçlı.

Daha fazla bilgi almak için, bu blog yazısı bir göz atabilirsiniz: What is Dependency Injection?

Tekiz bu sınıfın örneğini her zaman kullanılma ihtimali olduğunu, böyle mi? Ya da sadece zaman aramadı yöntemleri bazen kullanılır? Eski ise, yapıcı bunu yapmak için muhtemelen daha basittir; ikincisi ise, o zaman verimliliği sadece (- eğer o değil, sadece yapıcı bunu yapmak ve kendinizi biraz güçlük kaydetmek bu ilk tekiz yaratılış havai önemli olduğunu varsayarak) on-demand her yönteminde başlatmasını öneririz.