2012-10-25 44 views
1

到目前爲止,我已經寫了一個月的面向對象風格,現在我想知道哪種方法是用sql查詢的正確方法。因此,例如,我有類getPlayerData函數。那麼,哪一種方式更好 - 1)做一個mysql程序類外,並給予牽強陣列getPlayerData 2)是否所有的程序類對象中的Mysql查詢

,如果你認爲第二種情況那麼我應該開始與全球各功能$變量,其中mysqli實例啓動?

對不起,如果我不使用正確的條款,你可以隨時糾正我。謝謝!

回答

1

而不是給每一類功能的全局變量,你可以這樣做:

class Test{ 

    protected $mysqli = null; 

    function __construct($mysqli = null){ 
     $this->mysqli = $mysqli; 
    } 

    public function setMySqli($mysqli){ 
     $this->mysqli = $mysqli; 
    } 

    public function getSomething(){ 
     $result = $this->mysqli->query("SELECT something FROM table"); 
     //do something with result here 
     return $result; 
    } 

} 

允許你使用你的對象,像這樣:

$test = new Test($mysqli); 
$result = $test->getSomething(); 

$test = new Test(); 
$test->setMySqli($mysqli); 
$result = $test->getSomething(); 
+1

加入韋恩惠特斯的答案。他在這個類中所做的稱爲依賴注入,在這種情況下被認爲是最佳實踐。 –

+0

這讓事情變得如此清晰。我瞭解這些事情,現在我知道最好的辦法。謝謝:)我看到我的格式在開放式文章中非常難看,所以很抱歉。 –