Singleton CodeIgniter-tarzı $ vs bu değişkenlere erişmek için

2 Cevap php

Ben değişkenleri erişmek için artılarını ve bu iki yaklaşımın eksileri nelerdir, merak ediyorum:

1) CodeIgniter-tarzı (bu bir adı var mı?)

public function doSomething()
{
 $database = $this->database; // or just $this->database
}

2) Singleton deseni

public function doSomething()
{
 $database = Framework_Database::getInstance();
}

Bir belirgin fark Singleton ile, bunu değiştiremezsiniz olmasıdır. Sadece erişebilirsiniz, ama sadece bir sınıfta veya bir değişkeni örneğini erişim yönüyle burada bahsediyorum.

Oh, ve diğer yaklaşımlar vardır?

2 Cevap

Varolan bir örneğine bir başvuru alma Bu iki yöntem gerçekten birbirini dışlayan değil. İlk doSomething () yöntemi de (belki de sınıf yapıcısı aracılığıyla) bir veritabanı örneği için ayarlanmış bir $ veritabanı alanı içeren bir sınıfta bulunan üstleniyor. $ O ilk ayar bu-> veritabanı çok iyi bir Singleton'ın getInstance () yönteminin kullanılması yoluyla olabilir.

Ben size sınıfının bir alan olarak örneğine bir başvuru tutmak veya her zaman Singleton doğrudan yeni bir başvuru talep edeceğini olup olmadığına ikisini karşılaştırmak olabilir o zaman varsayalım. Kesinlikle birini seçmek ve onunla sopa olsa ben, bu sadece tercih aşağı gelmek olmaz bir zaman düşünemiyorum. (Şahsen ben endişeleri ayrılması için ikinci seçsin)

En önemlisi, sizin kod kullanmak desenleri tutarlılık uzun bir yol bakım maliyetlerinin düşürülmesi doğru gidecek.

Bu http://stackoverflow.com/questions/228164/on-design-patterns-when-to-use-the-singleton bir göz atın

Bu açık değilken Singleton deseni kullanmak ya da yapabilirsiniz