First: @emre-yazici
I would have answered the same thing.
Soru:
"Ben MySQLi sınıfını genişletmek sınıfları yapmak mümkün olmak istiyorum"
takip göre:
class Blog {
Şahsen ben onun sınıf dediği umurumda değil: Blog / Blabla, benim varsayım onun db bağlantı yöntemi ile başa çıkmak için bir dosya bir sınıf oluşturmak ve bunu içermelidir ne olursa olsun dosya yapan bir $ db ardından sorguları = new Bazı db_getConnection işlevinde db_object ().
DbController.php
<?php
class db_Object extends mysqli {
protected $host = "mysqlHost";
protected $user = "mysqlUsername";
protected $password = "mysqlPassword";
protected $database = "mysqlDatabse";
// constructor
public function db_Object() {
parent::__construct($this->host, $this->user, $this->password, $this->database);
}
?>
getData.php
<?php
include_once('DbController.php');
class getData {
function getConnection() {
$db = new db_Object();
return $db;
}
function get_PostCodes() {
$db = $this->getConnection();
$sql = "SELECT * FROM Postcodes":
$db->query($sql);
}
?>
Ben hepimiz için kabul düşünüyorum. Eğer gitmek için yol olduğunu düşünüyorum diye, aslında çoğu php çerçeveler orada zaten bağlantılarını işlemek için bir nesne / DbController olacaktır.
(*OO means Object Oriented)
I think that this question was poorly formulated and thus misleading. It's amazing that bennn is using OO, but couldn't think to put his Db connection in an object of it's own. Sounds like he's using concepts he doesn't quite understand? However he's asking about methodology, so that actually makes the question valid I guess... I already stopped caring about question validity.
!!!!!!!!!!!!!!!!!!!!!!!!!!! HOWEVER !!!!!!!!!!!!!!!!!!!!!!!!!!!
(* Singleton Benim anlayışım böyle bir nesne gerektiren her yürütme yeni bir nesne oluşturmadan, kullanmak olacağını bellekte kalır bir örneğidir. Hafif bir performans artışı http://en.wikipedia.org/wiki/Singleton_pattern *)
Anyone who made mention of 'SINGLETON' and 'Data class' in the same sentence
IF I COULD DOWN-VOTE YOU I WOULD! SAYING THAT IS DOWNRIGHT EVIL!
Bir SINGLETON db sınıf için sadece "Maybe" geçerli durum bir raporlama sunucusu veya seçer, sadece yaptığı basit bir statik web sitesi olacak. Bunu yaparken bu durumda NoSQL gibi bir şey kullanabilirsiniz.
FOR ALL OTHER CASES, INCLUDING "I DON'T KNOW WHAT I'M DOING" CASE
Create a new dbConnection every time you need to run SQL
AÇIKLAMA
When you use a Singleton and pass all your SQL statements through that one instance, As soon as you try something like
$db->autocommit(false);
and start doing something like
BEGIN TRANSACTION [...]
UPDATE
DELETE
ROLLBACK
COMMIT
in different function calls, those SQL statements may go to the DB in an unorderly fashion. You may end up having another processes run a ROLLBACK when you wanted to run a COMMIT, and none of your changes will take place. You may have a COMMIT happen instead of a ROLLBACK and half your process get applied when you wanted it to cancel out instead. Leaving you with big time Data corruption in your database. I'm sure we could think of a million other types of SINGLETON corruptions that would screw up ALL of the flow of data between your php application and the Database. This is one of the drawbacks of the singleton pattern: "it introduces a global state".
Her zaman daha iyi ve daha güvenli bir model değil, yalnızca (DbController / db_object / ne olursa olsun örneği), yeni bir bağlantı oluşturarak ama aynı zamanda gelecekteki kanıtı. Sen bir tek ileride korkunç sorunları ile kendinizi hattına kötü gerekçesiyle ayarlama gibi DbController yapma, php uygulama / web sitesinde siz veya bir başkası tarafından uygulanması gereken gelecekteki ne gibi iyileştirmeler asla bilemezsiniz.
SINGLETON DB NESNELERI MÜŞAVİRLİK DUR LÜTFEN. YETER KÖTÜ KOD ZATEN orada var. Saygılarımızla.