Ben küresel daha statik daha iyi veya daha iyi tekiz, vb SO benzer konular hakkında sorular onlarca okudum, ama ben bu ÖZEL soruya bir cevap gelmedi hakkında bir tartışma yaratmak istemiyorum, bu yüzden umarım Birisi şimdi real simple EXAMPLES bir (veya daha fazla) bu soruyu cevaplayarak beni aydınlatmak değil, sadece kuramsal tartışmalar olabilir.
Benim app ben typical DB class to abstract the DB layer var ve kod her yerde yazmak zorunda kalmadan DB görevleri gerçekleştirmek için mysql_connect / mysql_select_db / mysql...
I could write the class either as a STATIC CLASS:
class DB
{
private static $connection = FALSE; //connection to be opened
//DB connection values
private static $server = NULL; private static $usr = NULL; private static $psw = NULL; private static $name = NULL;
public static function init($db_server, $db_usr, $db_psw, $db_name)
{
//simply stores connections values, without opening connection
}
public static function query($query_string)
{
//performs query over alerady opened connection, if not open, it opens connection 1st
}
...
}
OR as a SINGLETON:
class DBSingleton
{
private $inst = NULL;
private $connection = FALSE; //connection to be opened
//DB connection values
private $server = NULL; private $usr = NULL; private $psw = NULL; private $name = NULL;
public static function getInstance($db_server, $db_usr, $db_psw, $db_name)
{
//simply stores connections values, without opening connection
if($inst === NULL)
$this->inst = new DBSingleton();
return $this->inst;
}
private __construct()...
public function query($query_string)
{
//performs query over already opened connection, if connection is not open, it opens connection 1st
}
...
}
Sonra benim app sonra ben yapabilirdim DB sorgulamak istiyorsanız
//Performing query using static DB object
DB:init(HOST, USR, PSW, DB_NAME);
DB::query("SELECT...");
//Performing query using DB singleton
$temp = DBSingleton::getInstance(HOST, USR, PSW, DB_NAME);
$temp->query("SELECT...");
Benim için Singleton sınıfının static
her yöntemi olarak ilan önlemek için tek avantajı var. Sana bazı bana EXAMPLE bu specific case içinde tekiz gerçek avantajı verebilir eminim. Şimdiden teşekkürler.