Saya biasanya lebih suka menulis kelas non statis biasa dan menggunakan kelas pabrik untuk membuat instance tunggal (sudo statis) objek.
Dengan cara ini konstruktor dan destruktor bekerja seperti biasa, dan saya dapat membuat instance non-statis tambahan jika saya mau (misalnya koneksi DB kedua)
Saya menggunakan ini sepanjang waktu dan sangat berguna untuk membuat penangan sesi penyimpanan DB kustom, seperti ketika halaman berakhir, destruktor akan mendorong sesi ke database.
Keuntungan lainnya adalah Anda dapat mengabaikan pesanan yang Anda panggil karena semuanya akan diatur sesuai permintaan.
class Factory {
static function &getDB ($construct_params = null)
{
static $instance;
if( ! is_object($instance) )
{
include_once("clsDB.php");
$instance = new clsDB($construct_params);
}
return $instance;
}
}
Kelas DB ...
class clsDB {
$regular_public_variables = "whatever";
function __construct($construct_params) {...}
function __destruct() {...}
function getvar() { return $this->regular_public_variables; }
}
Di mana pun Anda ingin menggunakannya, panggil saja ...
$static_instance = &Factory::getDB($somekickoff);
Kemudian perlakukan saja semua metode sebagai non-statis (karena memang demikian)
echo $static_instance->getvar();