Yani ....
Tüm Singletons, Küresel Devlet Değişkenler hakkında sorulan birçok soru, ve tüm bu harika şeyler tabii ki vardır. Benim sorum,
If Singletons and Globals are So Bad, Why are they used so often?
Aşağıdaki örnekler, ben insanların iyi bir yığın tarafından kullanılan inanıyorum kafamın üst kapalı sadece olanlardır.
Sana bir pseudo-tekiz işlevini kullanan CodeIgniter bir işlev vermek:
(\ CodeIgniter \ common.php Hattı 89 sistemi)
/**
* Class registry
*
* This function acts as a singleton. If the requested class does not
* exist it is instantiated and set to a static variable. If it has
* previously been instantiated the variable is returned.
*
* ......
*/
function &load_class($class, $instantiate = TRUE)
{
static $objects = array();
// Does the class exist? If so, we're done...
if (isset($objects[$class]))
{
return $objects[$class];
}
.......
}
Tek bir kayıt içine her nesne yerleştirerek, bir şey birden çok örneğini oluşturmak için kendi load_class işlevini kullanamazsınız. Veri yapıları olarak sınıflarını kullanmak istediğinizde özellikle sakıncalıdır.
Bütün bu sınıfların yalnızca bir örneği var çünkü Ayrıca, bu Küresel Devlete karşı argüman haline yol açar. Hangi beni götürür .....
Global değişkenler esas çalışan tüm Wordpress Sistemi. Mesaj yoluyla döngü için tüm verilerin çeşitli globalleri hakkında mayınları.
(\ Query.php Hattı 2644 wp-includes)
/**
* Setup global post data.
*
*....
*/
function setup_postdata($post) {
global $id, $authordata, $day, $currentmonth, $page, $pages, $multipage, $more, $numpages;
$id = (int) $post->ID;
$authordata = get_userdata($post->post_author);
....
}
Bunlar sistemin tamamı için temel olarak Singleton / Globals kullanmak Altyapıları sadece iki ana örnektir!
Bu sistemler OOP metodolojisi kadar yakalanmış değil çünkü Yani .. bu sadece bir? Eğer dayanarak tüm sistemi yapmak için, Global Değişkenler veya tekiz kullanmak için söylüyorum bu kadar çok insan varken sadece mantıklı değil uygulamalar dedi.
Tabii PHP4 ile geriye dönük uyumluluk konusunda argüman var. Ben hala sınıflar hala mevcut olduğu gibi, PHP4 OOP programlama yapmak için yolları olduğunu düşünüyorum.