Genelde düzenli statik olmayan sınıflar yazmayı ve nesnenin tek (sudo statik) örneklerini örneklemek için bir fabrika sınıfı kullanmayı tercih ederim.
Bu şekilde yapıcı ve yıkıcı normal şekilde çalışır ve dilersem ek statik olmayan örnekler oluşturabilirim (örneğin ikinci bir DB bağlantısı)
Bunu her zaman kullanıyorum ve özellikle sayfa sonlandırıcıyı sonlandırdığında oturumu veritabanına itecek gibi özel DB deposu oturum işleyicileri oluşturmak için kullanışlıdır.
Diğer bir avantaj, her şeyi talep üzerine ayarlanacağı için, şeyleri çağırdığınız sırayı göz ardı edebilirsiniz.
class Factory {
static function &getDB ($construct_params = null)
{
static $instance;
if( ! is_object($instance) )
{
include_once("clsDB.php");
$instance = new clsDB($construct_params); // constructor will be called
}
return $instance;
}
}
DB sınıfı ...
class clsDB {
$regular_public_variables = "whatever";
function __construct($construct_params) {...}
function __destruct() {...}
function getvar() { return $this->regular_public_variables; }
}
Kullanmak istediğiniz her yerde arayın ...
$static_instance = &Factory::getDB($somekickoff);
Sonra tüm yöntemleri statik olmayan olarak ele alın (çünkü bunlar)
echo $static_instance->getvar();